Javascript 使用$httpBackend测试角度控制器时出现奇怪错误

Javascript 使用$httpBackend测试角度控制器时出现奇怪错误,javascript,angularjs,unit-testing,jasmine,karma-runner,Javascript,Angularjs,Unit Testing,Jasmine,Karma Runner,我已经试着修了好几个小时了。不幸的是有负面影响,所以请帮助我 在我的应用程序中,我想测试我的$http请求。我使用$httpBackend来实现它 这是我的控制器代码: angular.module('app').controller('testController',function($scope,$http){ $http.get('/test/users').success(function(data){ console.log('wtf'); }); }) 我

我已经试着修了好几个小时了。不幸的是有负面影响,所以请帮助我

在我的应用程序中,我想测试我的$http请求。我使用$httpBackend来实现它

这是我的控制器代码:

angular.module('app').controller('testController',function($scope,$http){
 $http.get('/test/users').success(function(data){
        console.log('wtf');
    });
})
我的单元测试代码:

describe('testController tests', function(){
    var $httpBackend, $scope, createController;
    beforeEach(module('app'));
    beforeEach(inject(function($injector, ngTableParams, notifier,identity, $sessionStorage, $location){

        $httpBackend = $injector.get('$httpBackend');

        $httpBackend.whenGET('/test/users').respond({test: 'test'});

        $rootScope = $injector.get('$rootScope');
        $scope = $rootScope.$new();
        var $controller = $injector.get('$controller');


        createController = function(){
          return $controller('testControler', { '$scope': $scope, '$http': $httpBackend });
        };


    }));

    it('should fetch users ', function() {
        $httpBackend.expectGET('/test/users');
        var controller = createController();
        $httpBackend.flush();
    });

});
它不起作用了。我总是有以下错误:

TypeError: Object function $httpBackend(method, url, data, callback, headers, timeout, withCredentials) {
var xhr = new MockXhr(),
    expectation = expectations[0],
    wasExpected = false;

function prettyPrint(data) {
  return (angula...<omitted>... } has no method 'get'
at new <anonymous> (http://localhost:9876/base/public/app/controllers/testController.js:256:11)
at invoke (http://localhost:9876/base/public/libraries/angular/angular.js:3805:17)
at Object.instantiate (http://localhost:9876/base/public/libraries/angular/angular.js:3816:23)
at $get (http://localhost:9876/base/public/libraries/angular/angular.js:6922:28)
at createController (http://localhost:9876/base/test/unit/testControllerSpec.js:70:18)
at null.<anonymous> (http://localhost:9876/base/test/unit/testControllerSpec.js:89:26)
at jasmine.Block.execute (http://localhost:9876/base/node_modules/karma-jasmine/lib/jasmine.js:1145:17)
at jasmine.Queue.next_ (http://localhost:9876/base/node_modules/karma-jasmine/lib/jasmine.js:2177:31)
at http://localhost:9876/base/node_modules/karma-jasmine/lib/jasmine.js:2167:18 
TypeError:Object函数$httpBackend(方法、url、数据、回调、标题、超时、withCredentials){
var xhr=new MockXhr(),
期望值=期望值[0],
waspeected=false;
函数预打印(数据){
return(angula……}没有方法“get”
在纽约(http://localhost:9876/base/public/app/controllers/testController.js:256:11)
在调用时(http://localhost:9876/base/public/libraries/angular/angular.js:3805:17)
在Object.instantiate(http://localhost:9876/base/public/libraries/angular/angular.js:3816:23)
以$get(http://localhost:9876/base/public/libraries/angular/angular.js:6922:28)
在createController(http://localhost:9876/base/test/unit/testControllerSpec.js:70:18)
在空(http://localhost:9876/base/test/unit/testControllerSpec.js:89:26)
在jasmine.Block.execute(http://localhost:9876/base/node_modules/karma-jasmine/lib/jasmine.js:1145:17)
在jasmine.Queue.next\u(http://localhost:9876/base/node_modules/karma-jasmine/lib/jasmine.js:2177:31)
在http://localhost:9876/base/node_modules/karma-jasmine/lib/jasmine.js:2167:18

您知道这意味着什么以及如何修复吗?

我认为问题在于您需要将依赖项添加到模块创建中:

angular.module('app', []).controller ...
而不是

angular.module('app').controller ...

我在代码中发现错误。$httpBackend不应该被注入控制器。

尝试使用
.expectGET
而不是
.whenGET
(在beforeach中)…在用例中,
$httpBackend.expectGET('/test/users');
是不必要的