javascript - angularJS:单元测试给出:未知提供者:$httpProviderProvider <- $httpProvider

标签 javascript unit-testing angularjs

在我尝试做的一个单元测试中

beforeEach(function () {
    angular.mock.inject(function ($injector) {
        $httpBackend = $injector.get('$httpBackend');
        mockUserResource = $injector.get('User');
        $httpProvider = $injector.get('$httpProvider');  // <-- problem
        $httpProvider.interceptors.push('myInterceptor');
    });
});

( demo )

为什么不能注入(inject) $httpProvider ?

我这样做的原因是因为我没有加载添加我所有拦截器的文件,因为我想一个一个地测试它们!

最佳答案

提供者只能在配置阶段注入(inject),angular.config

根据 this answer ,您可以尝试类似的方法:

beforeEach(module('yourModule', function($httpProvider) {
  $httpProvider.interceptors.push('myInterceptor');
}));

beforeEach(function() {
  angular.mock.inject(function($injector) {
    $httpBackend = $injector.get('$httpBackend');
    mockUserResource = $injector.get('User');
  });
});

有关依赖注入(inject)如何工作的更多信息,this 是一篇很棒的文章(不是 AngularJS 团队写的)

关于javascript - angularJS:单元测试给出:未知提供者:$httpProviderProvider <- $httpProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19767368/

相关文章:

javascript - 拉力赛SDK : adjust and check widget settings locally

android - 如何对特定的 JUnit 测试用例执行 @After?

visual-studio - VS.Net 单元测试——可能有项目范围的测试设置?

javascript - Angular ui-router 正则表达式导致错误

javascript - 数据属性的 CSS 不会刷新/重绘

javascript - 网络组件测试仪因自耕农生成器 polymer 而失败

javascript - 谷歌地图标记聚类器无法正常工作

unit-testing - VS2010 只运行一个 TestMethod

javascript - 在 Angular JS 中处理模式最简单的方法是什么?

javascript - Angular - 使用 $location 获取 GET 变量