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

Dependency injection angular.mock.inject()方法何时立即执行?,dependency-injection,angularjs,jasmine,karma-runner,Dependency Injection,Angularjs,Jasmine,Karma Runner,我一直在使用angular.mock.$httpBackend对使用$http的angular服务进行单元测试。我遇到了一些与注入所有依赖项相关的问题,因为我的测试用例需要访问服务,而服务又需要访问$httpBackend 然而,现在让我感到困惑的具体问题是,有时angular.mock.inject()便利方法会立即执行它包装的函数,有时它只返回函数的副本。我在源代码中看到,这是基于一个名为currentSpec.isRunning的属性。这是什么意思?这是遗嘱财产还是茉莉花财产?我还没有深入

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


然而,现在让我感到困惑的具体问题是,有时
angular.mock.inject()
便利方法会立即执行它包装的函数,有时它只返回函数的副本。我在源代码中看到,这是基于一个名为currentSpec.isRunning的属性。这是什么意思?这是遗嘱财产还是茉莉花财产?我还没有深入到兔子洞的深处…

上一次检查时,angular.mock.inject()的返回值基于您所处的Jasmine上下文类型(我假设他们在1.2中添加了mocha支持,对其进行了一些更改)

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

然后立即执行注入;但是,如果仍在定义等级库:

beforeEach(inject(function () { }));
然后它将返回一个函数。否则,它将在测试运行之前执行,并且不会非常有用。这似乎只是作为一种稍微方便/不太冗长的语法提供的

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