2013-06-18 73 views
1

我正在编写一个简单的AngularJS项目的测试,并使用伊斯坦布尔来计算代码覆盖率。我有一个根据伊斯坦布尔有100%的代码覆盖率文件,但我没有对任何测试:代码覆盖率的路由是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

[OT]:这是一个非常尴尬的问题,因为现在*在伊斯坦布尔是一个问题... – icedwater

回答

3

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

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

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

+0

你可能想要增加最后一部分......不能说足够多的时间。 – finishingmove

+0

但没有100%意味着您的代码没有经过测试,如果连续测量,测试覆盖率的下降表明功能在未添加测试的情况下实施。 –

+1

@TobiasLangner是的,这当然是真的,*但是*反过来是不正确的:如果你有50%的代码覆盖率,你不能有100%的功能覆盖率(除非你有很多冗余代码)。如果您的代码覆盖率达到100%,那么您仍然可能只有50%的功能覆盖率。 – JJJ

相关问题