在模拟依赖项时,angular.mock.module函数如何知道要解决的模块?

时间:2015-03-24 10:30:07

标签: angularjs unit-testing mocking

我想弄清楚函数angular.mock.module(通常别名为window.module)是如何工作的。我知道它的主要用途是在你的测试中加载一个模块;这很容易:

beforeEach(angular.mock.module("mymodule"));

这将在我的茉莉花规格中的每个myhmodule之前加载it

module的另一种用法是模拟某个模块内的服务/工厂/值。假设mymodule有一个名为foo的值为42的值,我可以在我的规范中这样说:

beforeEach(angular.mock.module("mymodule")); // this loads the module

// whereas this mocks the value of foo
beforeEach(module(function($provide) {
   $provide.value("foo", 43);
});

我的问题现在如下:module如何知道使用$provide服务进行模拟时要解决的模块?事实上,在我的测试中,我可以写:

beforeEach(angular.mock.module("mymodule"));
beforeEach(angular.mock.module("anothermodule"));

beforeEach(module(function($provide) {
   $provide.value("foo", 43);
});

这最后一段代码会提供foo=43mymoduleanothermodule吗?

1 个答案:

答案 0 :(得分:1)

module(function($provide) {
  $provide.value("foo", 43);
}

这会注册一个提供foo值的新模块。它不会将值添加到任何现有模块。