相关疑难解决方法(0)

为什么针对angular-google-maps提供程序的此测试失败?

我正在尝试测试使用的模块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

9
推荐指数
1
解决办法
516
查看次数

$提供外部配置块

我当然错过了关于喷射器的一些基本观点,但我不明白为什么会这样

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的情况并非如此.

internals angularjs angularjs-injector

3
推荐指数
1
解决办法
1464
查看次数