我一直在使用angular.mock.$httpBackend
进行单元测试,以获得使用$http
的角度服务。我遇到了一些与注入所有依赖项相关的问题,因为我的测试用例需要访问服务,而服务又需要访问$httpBackend
。
然而,现在让我失望的具体问题是有时angular.mock.inject()
方便方法会立即执行它包装的函数,有时它只会返回函数的副本。我在源代码中看到这是基于一个名为currentSpec.isRunning的属性。这是什么意思?这是一个Testacular或Jasmine财产吗?我还没走那么远的兔子洞......
答案 0 :(得分:0)
最后我检查过,angular.mock.inject()的返回值是基于你所处的Jasmine上下文类型(我假设他们在1.2中添加了mocha支持后将其改变了一点)。
基本上,如果您在规范中(实际上在回调中传递给beforeEach):
beforeEach(function () {
inject(function () { });
});
然后它将立即执行注射;但是,如果您仍在定义规范:
beforeEach(inject(function () { }));
然后它将返回一个函数。否则它将在你的测试运行之前执行,并且不是非常有用。这似乎只是作为一种更方便/更简洁的语法提供。