在我的一个单元测试中,我正在尝试
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)
为什么无法注入$ httpProvider?
我这样做的原因是因为我没有加载添加所有拦截器的文件,因为我想逐个测试它们!
答案 0 :(得分:10)
提供者只能在配置阶段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');
});
});
有关依赖注入如何工作的更多信息,this是一篇很棒的文章(不是由AngularJS团队编写的)
答案 1 :(得分:1)
名称Provider
会自动按角度添加。所以,你应该注入$http
。
$httpProvider = $injector.get('$http');