Service AngularJS使用$http和$q测试服务
我对AngularJS和JS测试都是新手,在如何测试这个相当简单的服务的问题上,我很难集中精力。我尝试过使用$httpBackend和'when'和'expect'进入变体配置,但没有效果。测试应验证1)数据通过deferred.resolve返回,2)没有数据通过deferred.reject返回。如果有人能给我指出正确的方向,我将非常感激。谢谢 顺便说一句:我用的是茉莉花+TestalService AngularJS使用$http和$q测试服务,service,angularjs,jasmine,promise,karma-runner,Service,Angularjs,Jasmine,Promise,Karma Runner,我对AngularJS和JS测试都是新手,在如何测试这个相当简单的服务的问题上,我很难集中精力。我尝试过使用$httpBackend和'when'和'expect'进入变体配置,但没有效果。测试应验证1)数据通过deferred.resolve返回,2)没有数据通过deferred.reject返回。如果有人能给我指出正确的方向,我将非常感激。谢谢 顺便说一句:我用的是茉莉花+Testal .service('myService', function($http, $q) { retur
.service('myService', function($http, $q) {
return {
getMyData: function() {
var deferred = $q.defer();
$http.get('/foo/bar.do').success(function(data) {
deferred.resolve(data);
}).error(function(){
deferred.reject();
});
return deferred.promise;
}
}
})
我在使用$http和$q测试服务时遇到了类似的问题。 以下是我通过的一项测试:
it('should issue a GET request to /foo/bar.do', inject(function ($httpBackend) {
$httpBackend.when('GET', '/foo/bar.do').respond('success');
var finalResult = '';
var result = myService.getMyData();
result.then(function(data) {
finalResult = data;
}, function() {
console.log('error');
});
$httpBackend.flush();
expect(finalResult).toBe('success');
}));
我在使用$http和$q测试服务时遇到了类似的问题。 以下是我通过的一项测试:
it('should issue a GET request to /foo/bar.do', inject(function ($httpBackend) {
$httpBackend.when('GET', '/foo/bar.do').respond('success');
var finalResult = '';
var result = myService.getMyData();
result.then(function(data) {
finalResult = data;
}, function() {
console.log('error');
});
$httpBackend.flush();
expect(finalResult).toBe('success');
}));
httpBackend应该这样做。您可以发布一些不起作用的测试代码吗?您是否使用$httpBackend.flush()?httpBackend应该这样做。你能发布一些不起作用的测试代码吗?你在使用$httpBackend.flush()?