我正在测试使用karma/jasmine的角度服务,我的一个服务功能如下。我需要得到覆盖率达到100%,但似乎无法弄清楚如何测试成功和错误的情况下..如何Karma测试使用httpbackend测试成功和错误情况下的Restangular http调用?
function getAccount(accountId) {
var defer = $q.defer(), myService;
myService = Restangular.all('Some/Url/Path');
myService.get('', {}, {
'header-info': 'bla'
})
.then(function onSuccess(response) {
defer.resolve(response);
}, function onError() {
someMethodCall();
});
return defer.promise;
}
在我相应的.spec测试文件,我有:
it('should succeed in getting account', function() {
httpBackend.whenGET('Some/Url/Path').respond(200, mockResponse);
var promise = myServices.getAccount('account123');
promise.then(function(response) {
expect(response).toEqual(mockResponse);
});
it('should error out in getting account', function() {
httpBackend.whenGET('Some/Url/Path').respond(500, '');
var promise = myServices.getAccount('account123');
promise.then(function() {
expect(someMethodCall).toHaveBeenCalled();
});
现在,这两种情况“通过”,但我没有得到onError案件的分支机构覆盖范围。 onSuccess的情况也会传递太多的东西。
基本上我问什么是正确的语法和编写测试用例,这样我可以打成功和对错误的案件的方式,当我做一个200和500电话到我的API
谢谢!!完美作品 – noobprogrammer
@noobprogrammer不客气:) – tasseKATT