2013-06-18 74 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

相關問題