我是AngularJS的新手和一般的JS测试,我在考虑如何测试这个相当简单的服务时遇到了麻烦。我尝试使用$ httpBackend与'when'和'expect'GET在变体配置中,但无济于事。测试应验证1)数据是通过deferred.resolve返回的,2)没有数据通过deferred.reject返回。如果有人能指出我正确的方向,我将非常感激。谢谢!
顺便说一下:我正在使用Jasmine + Testacular.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;
}
}
})
答案 0 :(得分:1)
我在使用$ 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');
}));