Javascript angularJS:单元测试提供:未知提供程序:$httpProviderProvider<;-$httpProvider
在我的一个单元测试中,我正在尝试Javascript angularJS:单元测试提供:未知提供程序:$httpProviderProvider<;-$httpProvider,javascript,unit-testing,angularjs,Javascript,Unit Testing,Angularjs,在我的一个单元测试中,我正在尝试 beforeEach(function () { angular.mock.inject(function ($injector) { $httpBackend = $injector.get('$httpBackend'); mockUserResource = $injector.get('User'); $httpProvider = $injector.get('$httpProvider');
beforeEach(function () {
angular.mock.inject(function ($injector) {
$httpBackend = $injector.get('$httpBackend');
mockUserResource = $injector.get('User');
$httpProvider = $injector.get('$httpProvider'); // <-- problem
$httpProvider.interceptors.push('myInterceptor');
});
});
在每个(函数()之前{
angular.mock.inject(函数($injector){
$httpBackend=$injector.get(“$httpBackend”);
mockUserResource=$injector.get('User');
$httpProvider=$injector.get(“$httpProvider”);//名称Provider
由angular自动添加。因此,您应该只注入$http
$httpProvider = $injector.get('$http');
下面是一个示例。提供程序只能在配置阶段,angular.config
中注入
根据,您可以尝试以下方法:
beforeEach(module('yourModule', function($httpProvider) {
$httpProvider.interceptors.push('myInterceptor');
}));
beforeEach(function() {
angular.mock.inject(function($injector) {
$httpBackend = $injector.get('$httpBackend');
mockUserResource = $injector.get('User');
});
});
有关依赖项注入工作原理的更多信息,请参阅一篇很棒的文章(不是AngularJS团队编写的)这是正确的,只是想补充一点,您可能希望在单元测试中避免实际的HTTP请求。我想您忘记了他想使用拦截器配置$httpProvider
。他不想注入$HTTP
服务。顶级问题,如此简洁和易于搜索!我遇到了这个确切的问题。