2014-05-19 4 views
6

이스탄불의 코드 범위 :이해 난 그냥 다음 문이있는 예제 파일 (example.js) 시작

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

내가 어떤 단위 테스트 파일이 없습니다. 내가

istanbul cover example.js 

을 실행할 때하지만 일부는 내가 덮여 3 중 2 문이 의미

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

합니까 아래 범위의 데이터를 보려면? 그렇다면이 코드를 대상으로하는 단위 테스트 파일이 없을 때이 코드가 어떻게 적용되는지보고 할 수 있습니까?

코드 커버리지의 정의로 이해할 수있는 것부터 단위 테스트에서 다루는 코드입니다. 나는 내가 단위 테스트를 쓰지 않았을 때 2 문장을 다루었다고 왜 istabul이 말했는지 이해하지 못한다.

+0

3 개의 명령문 중 2 개가 항상 실행되고 1은 결코 실행되지 않습니다. 제공된 샘플 코드에서 어떤 테스트를 실행하더라도 상관 없습니다. – RacerNerd

답변

5

이스탄불은 어떤 코드 행이 실행되었는지 확인합니다. 단순히 파일을 실행하면 두 줄을 실행하고 세 번째 줄은 무시합니다. 이 같은 것을 만들 것 인 경우 :

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

당신은 다른 결과를 (x = 42가 전혀 실행되지 않을 것이다) 얻을 것입니다. 실행 된 하나의 명령문은 module.exports

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

내가 함수를 가지고있을 때 (변수 할당이 아님) 왜 나는 1로 서술문 커버리지를 가지고 있는가? 함수를 호출하는 문장이 없습니다. – iRamesh

+0

@iRamesh 함수 선언은 파일 실행의 일부로 실행됩니다. – SomeKittens

+0

분기 통계는 무엇으로부터 생성됩니까? – streetlight

1

example.js가 테스트 파일이라고 가정합니다. 소스 코드를 포함 시키려면 --include-all-sources으로 실행하십시오.

관련 문제