我正在尝试使用VS2013中的Chutzpah为我的AngularJs应用做单元测试。
比方说,我有这样的工厂:如何在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
即使我没有使用$范围,运行时使用Chutzpah在VS2013的测试,这将抛出一个异常,和EXC eption说:
Result Message: Error: [$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" />
对不起,这不是一个问题,因为我看到我甚至不能在工厂注入$ scope,因为它不是提供者。 我试过用$ http和$ rootScope提供程序,它确实有效。 – Dabbas