2015-11-18 34 views
3

編寫一個簡單的測試用例。茉莉花業力單元測試「錯誤:意外的請求:GET /Content/json/3420_layer0.json」

describe('Services', function() { 

    describe('API', function() { 

     var $httpBackend, $rootScope, createController, requestHandler; 
     var jsonLayer0 = "/Content/json/3420_layer0.json"; 

     // Set up the module 
     beforeEach(module('anbud')); 

     beforeEach(inject(function ($injector) { 
      // Set up the mock http service responses 
      $httpBackend = $injector.get('$httpBackend'); 

      $httpBackend.whenGET(jsonLayer0).respond(200, ''); 

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

      // The $controller service is used to create instances of controllers 
      var $controller = $injector.get('$controller'); 

      createController = function() { 
       return $controller('anbudTreeController', { '$scope': $rootScope }); 
      }; 
     })); 

     afterEach(function() { 
      $httpBackend.verifyNoOutstandingExpectation(); 
      $httpBackend.verifyNoOutstandingRequest(); 
     }); 

     it('should fetch first layer', function() { 
      $httpBackend.expectGET(jsonLayer0); 
      var controller = createController(); 
      $rootScope.getFirstLayer(); 
      $httpBackend.flush(); 
     }); 

我得到:

Error: Unexpected request: GET /Content/json/3420_layer0.json 

但是,我有:

var jsonLayer0 = "/Content/json/3420_layer0.json"; 
$httpBackend.whenGET(jsonLayer0).respond(200, ''); 

所以,不知道是什麼問題...

完整堆棧跟蹤:

Error: Unexpected request: GET test 
     No more request expected 
      at $httpBackend (C:/git/angularjs/NSview/NSviewer/Scripts/angular-mocks.js:1244:9) 
      at $httpBackend (C:/git/angularjs/NSview/NSviewer/Scripts/angular-mocks.js:1237:11) 
      at sendReq (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:10515:9) 
      at serverRequest (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:10222:16) 
      at processQueue (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:14745:28) 
      at C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:14761:27 
      at Scope.$eval (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:15989:28) 
      at Scope.$digest (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:15800:31) 
      at Function.$httpBackend.flush (C:/git/angularjs/NSview/NSviewer/Scripts/angular-mocks.js:1543:38) 
      at Object.<anonymous> (C:/git/angularjs/NSview/NSviewer/app/tests/testServiceAPI.js:54:26) 
     Error: [$rootScope:inprog] $digest already in progress 
     http://errors.angularjs.org/1.4.7/$rootScope/inprog?p0=%24digest 
      at C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:68:12 
      at beginPhase (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:16346:15) 
      at Scope.$digest (C:/git/angularjs/NSview/NSviewer/Scripts/angular.js:15780:9) 
      at Function.$httpBackend.verifyNoOutstandingExpectation (C:/git/angularjs/NSview/NSviewer/Scripts/angular-mocks.js:1575:38) 

編輯: 補充:

$httpBackend.expectGET(jsonLayer0); 

補充: 完整堆棧跟蹤

+0

您可以張貼錯誤的完整堆棧跟蹤。 – Vivek

+0

當然! @VVK – ganjan

回答

2

它需要告訴$httpBackend期待的GET請求。

試試下面的代碼

it('should fetch first layer', function() { 
    $httpBackend.expectGET(jsonLayer0); 
    var controller = createController(); 
    $rootScope.getFirstLayer(); 
    $httpBackend.flush(); 
}); 
+0

謝謝,這是有道理的,但添加它,我仍然得到同樣的錯誤! :/ – ganjan

+0

@ganjan更新了代碼。請試一試。 – Vivek

+0

謝謝,試過了,但還是得到了同樣的錯誤。 – ganjan