我正在尝试为angularjs编写一个模拟$ httpBackend的测试。以下是测试。
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调用必需参数。
答案 0 :(得分:5)
expect($httpBackend.get).toHaveBeenCalled();
无效。首先是因为$ httpBackend没有任何(记录的)get()方法。其次,因为Jasb没有监视$ httpBackend.get,所以如果调用了这个方法,你就不能添加Jasmine。
你应该测试一下,给定http后端返回的空数组,服务返回正确的东西,或者具有所需的副作用。你也可以使用
$httpBackend.expectGET('api/Abc').respond([]);
和
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
以便$ httpBackend验证您是否已发送预期请求。