gpt4 book ai didi

javascript - karma 代码执行

转载 作者:行者123 更新时间:2023-11-30 05:40:51 25 4
gpt4 key购买 nike

查看来自 Angular in Actionkarma 测试,我运行了以下测试。

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);
...
});
});

控制台记录:

    after| modelService: undefined 
modelService: Object ...
it: modelService Object ..

modelService 是否未定义,因为 console.log 执行 before 运行设置 beforeEach模型服务

最后,自 karma 以来,it(...) 函数是否具有 modelServiceObject 值调用 beforeEach,然后运行 ​​it?

最佳答案

嗯,是的,是的。

如果您想了解更多细节,这里有一个最小的代码示例,它演示了您要询问的内容:

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 被记录。

这可能是您真正想知道的更多内容 - 希望您觉得它有用。

关于javascript - karma 代码执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20907563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com