我花了很长时间来试图覆盖提供给模块配置函数的注入常量.我的代码看起来像
common.constant('I18n', <provided by server, comes up as undefined in tests>);
common.config(['I18n', function(I18n) {
console.log("common I18n " + I18n)
}]);
Run Code Online (Sandbox Code Playgroud)
我们通常的方法是保证I18n在我们的单元测试中被注入了
module(function($provide) {
$provide.constant('I18n', <mocks>);
});
Run Code Online (Sandbox Code Playgroud)
这适用于我的控制器,但似乎配置功能不会查看$provide
模块外部的内容.它不是获取模拟值,而是将早期值定义为模块的一部分.(在我们的测试中未定义;在下面的plunker中,'foo'.)
下面是一个工作的plunker(看看控制台); 有谁知道我做错了什么?