【发布时间】:2017-05-20 15:29:36
【问题描述】:
我正在使用 karma/jasmine 测试 Angular 服务,我的服务功能之一如下。我需要将覆盖率提高到 100%,但似乎无法弄清楚如何测试成功和错误案例。..
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 案例的传递似乎也有些可疑。
基本上我在问什么是正确的语法和编写测试用例的方式,这样当我对我的 API 进行 200 和 500 调用时,我可以同时成功和错误用例
【问题讨论】:
标签: javascript angularjs karma-jasmine karma-coverage