2015-06-14 52 views
2

我正在嘗試編寫一個測試模擬$ httpBackend的angularjs。以下是測試。

describe('test', function() { 

    beforeEach(function(){ 
     module('abcApp'); 
    }); 

    var $httpBackend, filterService; 
    beforeEach(inject(function($injector) { 
     $httpBackend = $injector.get('$httpBackend'); 
     filterService = $injector.get('filterService'); 
    })); 

    it('getCompany calls get on http with correct parameter', function() { 
     $httpBackend.when('GET', 'api/Abc').respond([]); 
     filterService.getAbc(); 
     $httpBackend.flush(); 
     expect($httpBackend.get).toHaveBeenCalled(); 
    }); 
}); 
當我運行測試,我得到以下錯誤

: - 錯誤:預期間諜,卻得到了不確定。

任何想法我將如何斷言$ httpBackend.get已使用expect期望的參數調用。

回答

4
expect($httpBackend.get).toHaveBeenCalled(); 

無效。首先,因爲$ httpBackend沒有任何(記錄)的get()方法。其次,由於$ httpBackend.get不會被Jasmine窺探,因此如果調用此方法,則不能添加Jasmine。

你應該測試一下,給定http後端返回的空數組,服務返回正確的東西,或者具有所需的副作用。你也可以使用

$httpBackend.expectGET('api/Abc').respond([]); 

$httpBackend.verifyNoOutstandingExpectation(); 
$httpBackend.verifyNoOutstandingRequest(); 

使得$ httpBackend驗證了您的預期請求已發送。

相關問題