我的服务看起来像那样:
System.InvalidCastException: Unable to cast object of type 'Ok[System.Boolean,System.Object]' to type 'Result`2[System.Object,System.Object]'.
我如何为服务注入特定的依赖项?例如,我想只为我的服务注入angular.module('app').service('MyService' , function (dependency1, dependency2, dependency3 ...) {
function funcToTest() {
// Do something
}
}
而我并不关心其他依赖项。
答案 0 :(得分:1)
与单元测试Angular控制器不同,我们无法直接传递依赖关系。这是$provide
服务拯救的地方!
以下是一个示例:
beforeEach(module('myApp', function ($provide) {
mockDependecy2 = {
mockFunction: function() {}
};
$provide.value('dependency2', mockDependecy2);
}));
然后,您可以正常编写规范:
beforeEach(inject(function(_MyService_, ...) {
...
MyService = _MyService_;
}));
describe("...", function() {
it("...", function() {
MyService.funcToTest();
// write expect statements here
})
})
如示例中所示,您可以(可选)用下划线括起它们,当解析引用名称时,下划线会被注入器忽略。
答案 1 :(得分:0)
无论在何处使用,都会自动在您的服务中注入dependency2
var dependency2;
beforeEach(function () {
inject(function (dependency2){
dependency2 = dependency2;
});
}