模块A的模拟服务通过模块C提供给模块B.

时间:2016-08-16 22:44:05

标签: angularjs unit-testing karma-jasmine

引言

angular.module('myApp.Services', []);
angular.module('myApp.Controllers', []);
angular.module('myApp', ['myApp.Controllers', 'myApp.Services'])

angular.module('myApp.Services').service('fooSrvc', function(){});

angular.module('myApp.Controllers')
    .controller('FooCtrl', ['fooSrvc', function(fooSrvc){}]);

myApp模块是应用程序的主要模块,它依赖于myApp.ServicesmyApp.Controllers模块。

myApp.Controllers 没有直接依赖 myApp.Services模块,但来自fooSrvc模块myApp.Services可用于注入FooCtrl模块的strong> myApp.Controllers

好吧,不管怎样,这只是有效的,我可以理所当然地接受它,虽然我不知道如何。

但是把它调到FooCtrl的单元测试水平。我需要模仿fooSrvc。好吧,我可以嘲笑它:

beforeEach(function() {
  module('myApp.Controllers');

  module(function($provide) {
    $provide.service('fooSrvc', function() {
      // Mocking fooSrvc
    });
  });
});

问题

我是否应该模拟任何模块,并且由于模块myApp.ControllersmyApp.Services之间的魔法依赖性,这个模块组织是不是很糟糕?

0 个答案:

没有答案