2014-05-19 10 views
6

ich nur mit einem Beispiel-Datei gestartet (example.js), die die folgenden Aussagen hat:Verständnis Istanbul Code Coverage

x = 42; 
if(false) 
    x = -1; 

Ich habe keine Unit-Test-Datei. aber wenn ich

laufen
istanbul cover example.js 

Ich sehe einige der unten Abdeckungsdaten

=============================== Coverage summary =============================== 
Statements : 66.67% (2/3) 
Branches  : 50% (1/2) 
Functions : 100% (0/0) 
Lines  : 66.67% (2/3) 
============================================================================== 

Heißt das implizieren Ich habe 2 Aussagen von 3, die abgedeckt werden? Wenn ja, wie kann es melden, dass dieser Code abgedeckt ist, wenn ich keine Unit-Test-Datei habe, die auf diesen Code abzielt?

Von dem, was ich per Definition der Codeabdeckung verstehe, ist es Code, der durch Unit-Tests abgedeckt ist. Ich verstehe nicht, warum Istabul sagt, dass ich 2 Aussagen habe, wenn ich keine Unit-Tests geschrieben habe.

+0

2 der 3 Anweisungen werden immer ausgeführt und 1 wird niemals ausgeführt. Dies gilt unabhängig davon, welchen Test Sie mit dem bereitgestellten Beispielcode ausführen. – RacerNerd

Antwort

5

Istanbul überprüft, welche Codezeilen ausgeführt wurden. Wenn Sie die Datei einfach ausführen, werden zwei der Zeilen ausgeführt und die dritte ignoriert. Wenn Sie so etwas zu schaffen sind:

module.exports = { 
    myFunc: function() { 
    x = 42; 
    if(false) { 
     x = -1; 
    } 
    } 
}; 

würden Sie ein anderes Ergebnis erhalten (x = 42 haupt nicht ausgeführt werden würde). Die eine Anweisung ausgeführt ist module.exports

=============================== Coverage summary =============================== 
Statements : 25% (1/4) 
Branches  : 0% (0/2) 
Functions : 0% (0/1) 
Lines  : 25% (1/4) 
================================================================================ 
+0

wenn ich gerade Funktion habe (nicht als Variablenzuweisung), warum habe ich noch Aussage Abdeckung als 1? Ich habe keine Aussage, die die Funktion aufruft. – iRamesh

+0

@iRamesh Die Funktionsdeklaration wird als Teil der Ausführung der Datei ausgeführt. – SomeKittens

+0

Woraus wird die Zweigstatistik generiert? – streetlight

1

example.js nehme an, die Testdatei zu sein. Und wenn Sie Quellcode einschließen möchten, führen Sie mit --include-all-sources.