簡體   English   中英

如何在AngularJs中模擬工廠的依賴關系?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM