我需要修改一个常量服务。这项服务没有附加测试,但我想,至少部分地,用我将用Jasmine编写的单元测试来覆盖文件和我的修改。
该服务如下:
(function () {
angular
.module('app')
.constant('myService', myService);
function myService() {
dependencyOne: dependencyOneImpl,
someFunction: someFunctionImpl
...
}
dependencyOneImpl.$inject = ['someDependency'];
function dependencyOneImpl(someDependency) {
...
}
someFunctionImpl.$inject = ['dependencyOne', 'dependencyTwo'];
function someFunctionImpl(dependencyOne, dependencyTwo) {
...
}
})();
它用于路线的解决过程(我们使用ui-router)。激活特定路由时,将调用服务的功能:
someRoute = {
url: '...',
name: '...'
views: { ... },
resolve: { resolver.someFunction }
}
在构建服务时不需要依赖项,我试图测试服务公开的一个公共函数。
通常我会写测试:
prepareSomeSetup();
theService.someFunction();
assertSomething();
我可以手动解析函数所需的依赖项,但我想知道我是否可以获得ui-router在解析函数时获得的相同行为。似乎解决了依赖关系并执行了该函数。
我突然想到我可能需要在测试文件中注入$ injector服务并手动调用invoke以解决该功能,但它似乎不起作用。
如何在解析了两个依赖项的情况下调用该函数?
答案 0 :(得分:1)
定义注射功能时,必须使用$injector.invoke(fn, scope, otherArgs);
其中