2016-05-07 124 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'));