Javascript 业力代码执行
查看来自的Javascript 业力代码执行,javascript,angularjs,karma-runner,Javascript,Angularjs,Karma Runner,查看来自的karma测试,我运行了以下测试 describe("Service: angelloModel", function() { // load the service's module beforeEach(module("Angello")); var modelService; //Initialize the service beforeEach(inject(function (angelloModel) { mode
karma
测试,我运行了以下测试
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
,因为在运行设置modelService
的beforeach
之前执行了console.log
最后,it(…)
函数是否具有modelService
对象的值,因为karma
在每个之前调用,然后运行it
?呃,是和是
如果您想了解更多细节,这里有一个简单的代码示例,演示您所询问的问题:
describe('suite', function() {
var foo;
beforeEach(function() {
foo = 'bar';
});
console.log('foo: ' + foo);
it('test', function() {
console.log('foo: ' + foo);
});
}
测试运行者(本例中为Karma)有两个不同的阶段:测试定义和测试执行
在测试定义阶段,将执行测试脚本,这将导致构建包含测试和套件的内部数据结构
将调用测试框架的descripe
api;此api将记录套件名称并调用作为第二个参数传递的函数
将调用每个
api之前的;此api将把作为参数传递的函数与立即封装的测试套件相关联,但不会执行它
将执行console.log
语句,记录foo:undefined
将调用it
api;这将记录测试名称和作为第二个参数传递的函数,并将它们与立即封闭的测试套件相关联,但同样,传递的函数将不会执行
现在,测试运行程序将进入测试执行阶段,在此期间,测试框架将遍历其内部数据结构并执行定义的测试。在本例中:
将执行在每个
api之前传递给的函数,将字符串值'bar'
分配给变量foo
将执行传递给it
api的函数,从而记录foo:bar
这可能是你真正想知道的——希望你觉得它有用