我正在嘗試使用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