2016-05-07 121 views
2

所以我已經閱讀了很多文章,但迄今爲止沒有任何建議。如何以角度模擬模塊

我想嘲笑一個模塊 - 說角-foo。原始文件與其他所有內容一起加載。

angular.module('app', ['angular-foo'... 

我想在我的業力/摩卡測試中嘲笑這個模塊。我已經嘗試了像這樣調用它的建議,但這是不行的。

beforeEach(module('app')); 

beforeEach(module('angular-foo')) 

我該如何完全防止原始的angular-foo運行(但它必須作爲代碼的其餘部分加載)?

回答

4

嘲笑factoryservicevalue服務,angular.mock.module object argument可用於

beforeEach(module('app', 'angular-foo', { 
    fooFactoryService: ..., 
    fooValueService: ... 
})); 

嘲笑期間配置相位(constantprovider)可用於注射的服務,應當使用config功能

beforeEach(module('app', 'angular-foo', ($provide) => { 
    $provide.constant('fooConstantService', ...), 
    $provide.provider('fooProviderService', ...), 
})); 

該行中的最後一個模塊將覆蓋其他服務中的服務。這些服務可能會部分嘲弄(與$provide.decorator)或完全。

如果angular-foo模塊沒有在所有,但其他模塊加載使用它,它可以完全與它的嘲笑版本的規格重新定義與

angular.module('angular-foo', [])... 
beforeEach(module('app', 'angular-foo')); 
+1

感謝這讓我在正確的軌道上::模塊聲明之前 'angular.module( '角條紋',])提供商( '條紋',{setPublishableKey:函數(){}, $ get:function(){}}); beforeEach(模塊( '應用程序'));' – cyberwombat

0

什麼做的把戲對我來說是把供應商

beforeEach(module(function($provide) { 
    $provide.provider('myProvider', function() { 
     return { 
     myProviderFunction: function() {}, 

     $get: function() { 
      return { 
      myProviderFunction: function() {} 
      }; 
     } 
     }; 
    }); 
    })); 

    beforeEach(module('myApp'));