1

我正在为一个简单的 AngularJS 项目编写测试,并使用伊斯坦布尔来计算代码覆盖率。根据伊斯坦布尔,我有一个具有 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 报告页面为“绿色”,表明代码覆盖率良好。

为什么会这样?有什么可做的吗?(这是伊斯坦布尔的问题吗?)

4

1 回答 1

3

代码覆盖率仅显示 JavaScript 执行是否已到达这些行,而不显示是否有任何专门分配给它的测试。

Angular 很可能在测试执行期间正常读取路由配置,因此文件中的所有内容都标记为已覆盖。

这也是一个很好的提醒,100% 的代码覆盖率并不自动意味着 100% 的功能覆盖率。

于 2013-06-29T06:04:28.790 回答