我已经模拟了一个httpBackend来测试以下代码。
self.Api.post('/endpoint/action/', actionData)
.then(function(resp){
result = _.get(resp, 'data.MessageList');
if(resp.status = 200 && result) {
for (var i = 0; i < result.length; i++) {
addResultMessage(result[i]);
}
}
});
我嘲笑我的服务做了以下事情:
beforeEach(function(){
angular.mock.module(function(ApiProvider) {
ApiProvider.setUrl('http://localhost:10010');
});
});
beforeEach(inject(function($rootScope, $controller, _$interval_, $q, $injector, $httpBackend){
$rootScope = $injector.get('$rootScope');
scope = $rootScope;
httpBackend = $httpBackend;
createController = function() {
return $controller('MyCtrl',{
$scope: scope,
$uibModalInstance: modalInstance,
$interval: _$interval_,
});
}
}));
在里面
httpBackend
.when('POST', 'http://localhost:10010/endpoint/action/')
.respond(200, mockedResponse);
当我对该端点执行POST时,我没有收到任何响应。我没有得到任何错误,只是我没有得到任何resp回调
答案 0 :(得分:0)
你应该在测试后调用flush(),如下所示:
it('should read expired login data', inject(function(authSrvc) {
$httpBackend.expectGET('data/auth.json').respond(200, mockedResponse);
authSrvc.checkStatus().then(function(data){
expect(authSrvc.isValidSession()).toEqual(false);
});
$httpBackend.flush();
}));