我正在尝试使用VS2013中的Chutzpah对我的AngularJs应用进行单元测试。
假设我有这个工厂:
myAppModule.factory('MyService',function(){
var fact = {};
fact.myFunction = function(){
return "Hello";
};
});
我为此编写了单元测试:
describe("TestService-Test", function () {
var service;
beforeEach(function () {
module('myApp');
inject(function ($injector) {
service = $injector.get('MyService');
});
});
这样可以正常工作,但如果我向同一个服务添加一个依赖项(或更多):
myAppModule.factory('MyService',function($scope){ ... etc the same
即使我没有使用$ scope,在使用Chutzpah在VS2013中运行测试时也会抛出异常,并且异常说:
结果消息:错误:[$ injector:unpr] ... etc
正如我从这个错误中理解的那样,它无法识别我要求的服务。
我需要能够在服务创建中注入一些依赖项,但是如何做呢?
如果我对控制器执行相同操作它会像魅力一样工作,因为它在使用服务$controller
创建控制器时有一种明确的方式来注入依赖项。
PS:
在测试js文件的顶部,我包括那些引用:
/// <reference path="../js/angular.min.js" />
/// <reference path="../js/angular-mocks.js" />
/// <reference path="../js/myAppFile.js" />
/// <reference path="../js/myServiceFile.js" />
答案 0 :(得分:0)
我认为这是Chutzpah github page上发布的相同问题。该决议由同一张原始海报发布:
对不起,这不是问题,因为我看到我甚至无法注入$ scope 工厂,因为它不是供应商。我用$ http和 $ rootScope提供商,它确实有效。
答案 1 :(得分:0)
很抱歉这不是问题,因为我看到我甚至无法在工厂注入$scope
,因为它不是提供者。我在$http
和$rootScope
提供商处尝试了它,它确实有用