首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Karma代码执行

Karma代码执行
EN

Stack Overflow用户
提问于 2014-01-03 15:52:47
回答 1查看 73关注 0票数 2

通过查看来自karma角度在行动中测试,我运行了以下测试。

代码语言:javascript
复制
describe("Service: angelloModel", function() {
    // load the service's module
    beforeEach(module("Angello"));

    var modelService;

    //Initialize the service
    beforeEach(inject(function (angelloModel) {
        modelService = angelloModel;
        console.log("modelService:", modelService);
    }));

    console.log("after| modelService:", modelService);

    it("it should return seven different statuses", function() {
                console.log("it: modelService", modelService);
                ...
    });
});

控制台记录如下:

代码语言:javascript
复制
    after| modelService: undefined 
    modelService: Object ...
    it: modelService Object ..

自运行设置modelServicebeforeEach之前执行console.log以来,modelService是否未定义?

最后,it(...)函数是否具有modelServiceObject值,因为karma调用了beforeEach,然后运行it

EN

回答 1

Stack Overflow用户

发布于 2014-01-04 01:37:16

呃,是的,是的。

如果您想要更多的细节,下面是一个最简单的代码示例,它演示了您要问的内容:

代码语言:javascript
复制
describe('suite', function() {

    var foo;

    beforeEach(function() {
       foo = 'bar';
    });

    console.log('foo: ' + foo);

    it('test', function() {
        console.log('foo: ' + foo);
    });

}

测试运行程序(在本例中为Karma)有两个不同的阶段:测试定义和测试执行。

在测试定义阶段,将执行测试脚本,这将导致构建包含测试和套件的内部数据结构。

  1. 将调用测试框架的describe api;该api将记录套件名称,并调用作为其第二个参数传递的函数。
  2. 将调用beforeEach api;该api将把作为其参数传递的函数与立即封装的测试套件关联起来,但不会执行它。
  3. 将执行console.log语句,记录foo: undefined
  4. 将调用it api;这将记录测试名称和作为其第二个参数传递的函数,并将它们与立即封装的测试套件相关联,但传递的函数将不会被执行。

现在,测试运行程序将进入测试执行阶段,在此阶段,测试框架将遍历其内部数据结构并执行定义的测试。在本例中:

  1. 传递给beforeEach api的函数将被执行,将字符串值'bar'分配给变量foo
  2. 传递给it api的函数将被执行,导致foo: bar被记录下来。

这可能是你真正想知道的更多--希望你发现它有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20907563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档