【问题标题】:Angular $httpBackend error "No more request expected"Angular $httpBackend 错误“不再需要请求”
【发布时间】:2016-07-20 22:18:04
【问题描述】:

下面是我的控制器,

function adminController($scope, $http, $location) {
$scope.enabledRights = [];
$http.get('user/rights').success(function(data) {
        $scope.enabledRights = data;

}).error(function() {
        $scope.enabledRights = [];
});
}

angular.module('queueManagerApp')
.controller('adminController',
    ['$scope', '$http', '$location', '$filter', '$window',    adminController]);

下面是我上面控制器的测试用例

'use strict';

describe('Admin controller', function () {
    var $controller;
    var $httpBackend;
    var $scope;
    var testData = {
      query: {
        input: ['XYZ']

      }
    }

beforeEach(module('queueManagerApp' ));

beforeEach(inject(function(_$controller_, _$httpBackend_) {
$controller = _$controller_;
$scope = {};
$httpBackend = _$httpBackend_;
}));

describe('http test ( Get user rights details -1 )', function () {
 it('should fetch user details', function() {
     $httpBackend.when('GET', '/user/rights')
     .respond(testData);

     $controller('adminController',{ $scope: $scope });

     //$scope.isEnabled();
     $httpBackend.flush();
     expect($scope.enabledRights).toEqual(testData.query.input);
 });
});

describe('http test (get User rights - 2 )', function () {
it('should fetch user rights details',inject(function($http) {
    var $scope = {};

    $http.get('/user/rights')
         .success(function(data,status,headers,config) {
             $scope.enabledRights = data;
         }).error(function(data, status,headers,config) {
             $scope.enabledRights = "Error";
         });

    $httpBackend
     .when('http://localhost:9999/user/rights')
     .respond(200, { enabledRights : 'XYZ' });

     $httpBackend.flush();

     expect($scope.enabledRights).toEqual ( { enabledRights : 'XYZ' }    
);   
}));
});  
});  

当我运行测试用例时,我遇到了错误,我不知道如何解决这个问题。请建议我解决同样的问题。

INFO [watcher]: Changed file "/home/madhugowda/Madhu/gitrepo/queue-    
manager-client/test/spec/controllers/admin.js".
WARN [web-server]: 404: /queuemanager/getUserName?token=undefined
WARN [web-server]: 404: /user/clientorgs
PhantomJS 1.9.8 (Linux 0.0.0) Admin controller http test ( Get user     
rights details -1 ) should fetch user details FAILED
Error: Unexpected request: GET user/rights
No more request expected
    at $httpBackend (/home/madhugowda/Madhu/gitrepo/queue-manager-  
client/bower_components/angular-mocks/angular-mocks.js:1211)
    at sendReq (/home/madhugowda/Madhu/gitrepo/queue-manager-  
client/bower_components/angular/angular.js:10334)
    at /home/madhugowda/Madhu/gitrepo/queue-manager-  
client/bower_components/angular/angular.js:10045
    at processQueue (/home/madhugowda/Madhu/gitrepo/queue-manager-
client/bower_components/angular/angular.js:14567)
    at /home/madhugowda/Madhu/gitrepo/queue-manager-   
client/bower_components/angular/angular.js:14583
    at /home/madhugowda/Madhu/gitrepo/queue-manager- 
client/bower_components/angular/angular.js:15846
    at /home/madhugowda/Madhu/gitrepo/queue-manager-
client/bower_components/angular/angular.js:15657
    at /home/madhugowda/Madhu/gitrepo/queue-manager- 
client/bower_components/angular-mocks/angular-mocks.js:1509
    at /home/madhugowda/Madhu/gitrepo/queue-manager-  
client/test/spec/controllers/admin.js:30 
PhantomJS 1.9.8 (Linux 0.0.0) Admin controller http test (get User   
rights - 2 ) should fetch user rights details FAILED
Error: Unexpected request: GET http://localhost:9999/user/rights
No more request expected
    at $httpBackend (/home/madhugowda/Madhu/gitrepo/queue-manager- 
client/bower_components/angular-mocks/angular-mocks.js:1211)
    at sendReq (/home/madhugowda/Madhu/gitrepo/queue-manager- 
client/bower_components/angular/angular.js:10334)
    at /home/madhugowda/Madhu/gitrepo/queue-manager- 
client/bower_components/angular/angular.js:10045
    at processQueue (/home/madhugowda/Madhu/gitrepo/queue-manager- 
client/bower_components/angular/angular.js:14567)
    at /home/madhugowda/Madhu/gitrepo/queue-manager- 
client/bower_components/angular/angular.js:14583
    at /home/madhugowda/Madhu/gitrepo/queue-manager-
client/bower_components/angular/angular.js:15846
    at /home/madhugowda/Madhu/gitrepo/queue-manager-
client/bower_components/angular/angular.js:15657
    at /home/madhugowda/Madhu/gitrepo/queue-manager-  
client/bower_components/angular-mocks/angular-mocks.js:1509
    at /home/madhugowda/Madhu/gitrepo/queue-manager-
client/test/spec/controllers/admin.js:50
    at invoke (/home/madhugowda/Madhu/gitrepo/queue-manager-
client/bower_components/angular/angular.js:4450)
    at workFn (/home/madhugowda/Madhu/gitrepo/queue-manager- 
client/bower_components/angular-mocks/angular-mocks.js:2404)
undefined
PhantomJS 1.9.8 (Linux 0.0.0): Executed 6 of 6 (2 FAILED) (0.002 secs    
/ 0.028 secs) 

【问题讨论】:

  • 您已将其配置为期待'http://localhost:9999/user/rights',但您只是请求'/user/rights'$httpBackend 关于论点的字面意思
  • 嗨,斯科特,感谢您的回复。我已更改为localhost:9999/user/rights,但我仍然遇到同样的错误。
  • 也许你需要把期望放在 $http.get 调用之前?

标签: angularjs karma-jasmine httpbackend


【解决方案1】:

直到您为您模拟的特定 URL 添加请求,直到那时您将收到此错误

  • 你只做了模拟
  • 确保您在代码中执行特定的 URL 调用
  • 如果您正在加载某些文件,例如 readJson 或require("file.json")

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2013-11-15
    • 2015-08-27
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多