我正在为一个简单的AngularJS项目编写测试,并使用Istanbul来计算代码覆盖率。根据伊斯坦布尔的说法,我有一个100%代码覆盖率的文件,但我没有任何测试:
'use strict';
define(['app'],function(app) {
app.config(['$routeProvider',function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainController'
})
.otherwise({
redirectTo: '/'
});
}]);
});
伊斯坦布尔的统计数据是:
Statements: 100% (4 / 4)
Branches: 100% (0 / 0)
Functions: 100% (2 / 2)
Lines: 100% (4 / 4)
并且整个HTML报告页面都是“绿色”,表示代码覆盖率很好。
为什么会这样?有什么事要做吗? (这在伊斯坦布尔是一个问题吗?)
答案 0 :(得分:3)
代码覆盖率仅显示JavaScript执行是否已到达这些行,而不是是否有专门为其分配的任何测试。
很可能Angular在执行测试期间正常读取路由配置,因此文件中的所有内容都标记为已覆盖。
这也是一个很好的提醒,100%的代码覆盖率并不意味着100%的功能覆盖率。