【发布时间】:2016-05-31 20:29:31
【问题描述】:
我正在为 Angular(使用 Jasmine 框架和 Karma)编写单元测试用例来运行测试用例。我需要使用 Coverage-html(Istanbul) 来覆盖代码。
有不同类型的覆盖:
- 功能。
- 分支机构
- 声明
- 行
- 已忽略(使用伊斯坦布尔我们可以忽略)。
请说明编写单元测试用例时需要注意的不同类型的覆盖率和基本因素:
function setCookie(sessionId) {
if(sessionId) {
setCookie('sessionId', sessionId, 21600);
} else {
setCookie('sessionId', session.getId(), 21600);
}
}
我为此编写了测试用例:
describe('setCookie()', function(){
it('should be set a cookie without expiration days', function() {
var defered =$q.defer();
spyOn(sessionCard, 'setCookie').andCallFake(function(){
return defered.promise;
})
sessionCard.setCookie('sessionId', 'sessionId');
expect(document.cookie).toBeDefined();
expect(document.cookie).toBeTruthy();
});
})
【问题讨论】:
-
分支覆盖意味着你已经覆盖了所有可能的情况。例如 if(x === true){do this}else{do that} 有两个分支,一个 x 为真,一个不为真。如果你为此编写一个 x 为真的测试,那么你将有 50% 的分支覆盖率。
标签: javascript angularjs jasmine karma-jasmine istanbul