angular.mock.inject()方法何时立即执行?

时间:2013-02-27 03:02:44

标签: dependency-injection angularjs jasmine karma-runner

我一直在使用angular.mock.$httpBackend进行单元测试,以获得使用$http的角度服务。我遇到了一些与注入所有依赖项相关的问题,因为我的测试用例需要访问服务,而服务又需要访问$httpBackend

然而,现在让我失望的具体问题是有时angular.mock.inject()方便方法会立即执行它包装的函数,有时它只会返回函数的副本。我在源代码中看到这是基于一个名为currentSpec.isRunning的属性。这是什么意思?这是一个Testacular或Jasmine财产吗?我还没走那么远的兔子洞......

1 个答案:

答案 0 :(得分:0)

最后我检查过,angular.mock.inject()的返回值是基于你所处的Jasmine上下文类型(我假设他们在1.2中添加了mocha支持后将其改变了一点)。

基本上,如果您在规范中(实际上在回调中传递给beforeEach):

beforeEach(function () {
    inject(function () { });
});

然后它将立即执行注射;但是,如果您仍在定义规范:

beforeEach(inject(function () { }));

然后它将返回一个函数。否则它将在你的测试运行之前执行,并且不是非常有用。这似乎只是作为一种更方便/更简洁的语法提供。