[英]How can I mock dependencies of a factory in AngularJs?
我正在嘗試使用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] ...等等
從此錯誤中我了解到,這是因為無法識別我要的服務。
我需要能夠在服務創建過程中注入一些依賴關系,但是該怎么做呢?
如果我對控制器進行了相同的操作,它將像一個魅力一樣工作,因為它具有使用服務$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" />
我認為這與在Chutzpah github頁面上交叉發布的問題相同。 決議是由同一原始海報發布的:
抱歉,這不是問題,因為我看到我什至不能在工廠注入$ scope,因為它不是提供程序。 我嘗試了$ http和$ rootScope提供程序,它確實起作用。
抱歉,這不是問題,因為我看到我什$scope
不能在工廠注入$scope
,因為它不是提供程序。 我嘗試了$http
和$rootScope
提供程序,它確實起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.