简体   繁体   English

Angular:如何解决$ httpProvider的[$ injector:unpr]错误并在茉莉花测试中注入控制器

[英]Angular: How to resolve [$injector:unpr] error for $httpProvider and inject controller in jasmine test

I am new to angular testing. 我是角度测试的新手。 Facing some issues while testing angular code using jasmine. 使用茉莉花测试角度代码时遇到一些问题。

It will be highly appreciated if you read my question and try to solve my problem as i googled it but could not find any satisfactory solution 如果您阅读了我的问题并尝试解决我在Google上搜索到的问题,但找不到任何令人满意的解决方案,将不胜感激

Here is my angular app 这是我的角度应用

var app = angular.module('myApp', ['ngAnimate', 'ui.router', 'ui.bootstrap', 'toggle-switch',
    'ngTagsInput', 'blockUI', 'ngBootbox', 'ui.select', 'ngSanitize', 'angular.filter']);

app.config(["$httpProvider", "blockUIConfig", function ($httpProvider, blockUIConfig) {
    'use strict';
    blockUIConfig.autoBlock = false;
    $httpProvider.defaults.xsrfCookieName = 'csrftoken';
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
    $httpProvider.interceptors.push('interceptorService');
}]);

And here is controller file: 这是控制器文件:

app.controller('myController', ['$scope', '$filter', '$http', '$window', '$ngBootbox', '$modal', 'dataservice', 'user', 'message_kinds',
    function($scope, $filter, $http, $window, $bB, $modal, dataservice, user, message_kinds) {
       $scope.user = user;
       /controller logic/
}]);

I want to test this controller if $scope.user equals to user or not.Am using jasmine for testing. 我想测试此控制器是否$ scope.user等于user.Am使用茉莉花进行测试。 Here is spec file. 这是规格文件。

describe("myController", function() {

  beforeEach(module('myApp'));

  beforeEach(inject(function(_$controller_){
    $controller = _$controller_;
  }));

  describe("myController testing", function () {

    it("should update scope.user", function () {
      var user = {customer_id: 1};
      var my_controller = $controller('myController', { user: user });
      expect(my_controller.user).toEqual(user);
    });
  });

});

I have also included all dependency files like angular.js, angular-mocks.js etc in SpecRunner.html 我还在SpecRunner.html中包括了所有依赖文件,例如angular.js,angular-mocks.js等。

Having three problems: 有三个问题:

  1. Facing [$injector:unpr] http://errors.angularjs.org/1.4.4/$injector/unpr?p0=interceptorServiceProvide error on app.config block regarding $httpProvider 面对[$injector:unpr] http://errors.angularjs.org/1.4.4/$injector/unpr?p0=interceptorServiceProvide错误上app.config关于块$httpProvider
  2. ReferenceError: $controller is not defined in spec.js at line ReferenceError: $controller is not defined在spec.js中的第1行ReferenceError: $controller is not defined

    var my_controller = $controller('myController', { user: user }); var my_controller = $ controller('myController',{user:user});

  3. How can I test if scope.user is equals to user in expect block? 如何测试scope.user是否等于scope.user块中的user

1) Check this answer , as regards $http/$httpBackend which might help you - you can adapt this to get the answers you're looking for 1)检查此答案 ,关于$ http / $ httpBackend可能会帮助您-您可以对其进行调整以获得所需的答案

2) Have you declared $controller (and now $httpProvider) as a variable in the beginning of the describe() block? 2)您是否在describe()块的开头声明了$ controller(现在是$ httpProvider)作为变量?

3) You should have that already. 3)您应该已经拥有了。 Your code, at least as I can see, looks like it should work like you want it to. 至少如我所见,您的代码看起来应该像您希望的那样工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 尝试将$ httpProvider注入服务时,AngularJs错误:[$ injector:unpr] - AngularJs Error: [$injector:unpr] while attempting to inject $httpProvider to a service 茉莉花测试:错误:[$ injector:unpr]未知提供者: - Jasmine test:error: [$injector:unpr] Unknown provider: 无法在茉莉花测试中注入依赖关系,得到错误:[$ injector:unpr]未知提供程序:appConfigProvider &lt;-appConfig - Not able to inject dependency in jasmine test, getting Error: [$injector:unpr] Unknown provider: appConfigProvider <- appConfig 组件的角路径解析[$ injector:unpr]错误 - Angular route resolve [$injector:unpr] error with components 错误:[$ injector:unpr]将routeprovider服务注入控制器后,茉莉花测试中的未知提供程序 - Error: [$injector:unpr] Unknown provider in jasmine test when routeprovider service is injected in a controller angular $ injector:unpr错误 - angular $injector:unpr Error Anguarjs; 错误:[$ injector:unpr]尝试使用$ httpProvider进行令牌认证 - Anguarjs; Error: [$injector:unpr] trying to do Token authentication with $httpProvider 将Angular服务注入控制器会导致$ injector:unpr错误(使用AngularBooter) - Injecting a Angular service into controller results in $injector:unpr error (using AngularBooter) Angular 1.6 $ injector:unpr错误 - Angular 1.6 $injector: unpr error Angular JS:错误:[$ injector:unpr] - Angular JS: Error: [$injector:unpr]
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM