我正在尝试测试使用的模块angular-google-maps.它失败了,因为angular.mock.inject找不到uiGmapGoogleMapApiProvider:
Error: [$injector:unpr] Unknown provider: uiGmapGoogleMapApiProviderProvider <- uiGmapGoogleMapApiProvider
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚出了什么问题.这是简化的测试用例:
'use strict';
describe('this spec', function() {
beforeEach(module('uiGmapgoogle-maps'));
it('tries to configure uiGmapGoogleMapApiProvider', inject(function(uiGmapGoogleMapApiProvider) {
expect(uiGmapGoogleMapApiProvider.configure).toBeDefined();
}));
});
Run Code Online (Sandbox Code Playgroud)
整个过程可以作为GitHub中可立即运行的Angular项目提供.如果您发现问题,请在此处回答Stack Overflow.如果您还向GitHub存储库提交拉取请求,则可获得奖励积分.
javascript angularjs karma-runner angular-mock angular-providers
我当然错过了关于喷射器的一些基本观点,但我不明白为什么会这样
angular.module('app').config(function ($provide) {
...
});
Run Code Online (Sandbox Code Playgroud)
还有这个
angular.module('app').config(function ($injector) {
$injector.invoke(function ($provide) { ... });
});
Run Code Online (Sandbox Code Playgroud)
按计划工作,而这一点
app.run(function($provide) {
...
});
Run Code Online (Sandbox Code Playgroud)
会扔
错误:[$ injector:unpr]未知提供者:$ provideProvider < - $ provide
如上所述,config与提供者有一些特殊的关系,同时run处理实例,但我不确定使config块如此特殊的东西.
因此,没有办法到达$provide外部config块,例如angular.injector()(尽管它似乎也获得了提供者实例)?
除了好奇之外,这个问题也有一些实际的考虑因素.在1.4中,所有$provide函数都暴露给模块,但1.3的情况并非如此.