我有一个带有greet
工厂的模块:
angular.module('someModule', [])
.factory('greet', function(name) {
return function() {
return 'Hi ' + name + '!';
}
});
这个工厂注入了name
一个在其他模块中定义的值。
angular.module('someOtherModule', [])
.value('name', 'example');
在测试这个模块时,我希望能够name
多次更改我的可注射的值(每个测试一次),以便我的测试看起来像:
// In my test file…
// Initialise the module I am testing `greet` upon, and mock the other module which has a `name` value
beforeEach(mocks.module('someModule', function ($provider) {
$provider.value('name', 'Bob');
}));
var greet
beforeEach(mocks.inject(function ($injector) {
greet = $injector.get('greet');
});
it('should say "Bob"', function () {
expect(greet()).toBe('Hi Bob!');
});
// Now I need to change the `name` value to be "Bar" instead
it('should say "Bar"', function () {
expect(greet()).toBe('Hi Bar!');
});
这怎么可能?
这两个模块由我的 app 模块组成:
angular.module('app', ['someModule', 'someOtherModule'])