2015-09-11 59 views
0

我正在嘗試使用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" /> 
+0

對不起,這不是一個問題,因爲我看到我甚至不能在工廠注入$ scope,因爲它不是提供者。 我試過用$ http和$ rootScope提供程序,它確實有效。 – Dabbas

回答

0

我認爲這是一個被橫在Chutzpah github page發佈了同樣的問題。該決議沒有被張貼在同一原始的海報:

Sorry it's not an issue, as I saw that I can't even inject $scope in factory because it's not a provider. I tried it with $http and $rootScope providers and it did work.

+0

是的,我發佈了一個問題的評論來澄清解決方案,我也會將它作爲答案發布 – Dabbas

0

對不起這不是一個問題,因爲我看到了,我甚至不能注入$scope在工廠,因爲它不是一個供應商。我試着用$http$rootScope提供商,它確實工作

相關問題