在Karma测试中模拟依赖关系的依赖关系

时间:2015-08-15 21:33:22

标签: angularjs karma-runner karma-mocha

- 我已经看到很多关于测试和DI的问题,但到目前为止还没有一个帮助过我。

我有一个模块:

...
<% @articles.each do |art| %>
<h1><%= link_to art.title, art, method: :get %> | id = <%= art.id %> | user_id = <%= art.user_id %></h1>
<div>
    <%= art.body %> - <%= link_to "Eliminar", art, method: :delete %>
    <% if art.may_publish? %>
        - <%= link_to "Publicar", '/articles/#{article.id}/publish' , method: :put %>
    <% end %>
</div>
<% end %>
...

使用我想测试的函数的简单服务:

angular
  .module('app.users', ['app.auth', 'app.foo']);

测试文件:

(function(){
  angular
    .module('app.users')
    .factory('UsersModel', UsersModel);

UsersModel.$inject = ["AuthService", "FooService"]

  function UsersModel(AuthService, FooService){
    function someFunction(){
      // do stuff...
  }
}

})();

现在,服务describe("Users", function(){ beforeEach(function(){ module('app.users'); angular.mock.module('app.auth'); // includes AuthService angular.mock.module('app.foo'); // include FooService }) describe("Username", function(){ it("should do stuff", inject(function(UsersModel){ // no code here })); }); }); 本身取决于FooService。当我在业力中运行时,我收到一个错误:

BarService

这让我感到困惑:因为我使用Unknown provider: BarServiceProvider <- BarService <- FooService <- UsersModel ,我原本预计angular.mock.module('app.foo')的依赖关系甚至不会被提及。显然他们是,所以我认为我做错了。

我应该如何处理我的服务依赖?我应该存根fooService吗?

0 个答案:

没有答案