2014-12-22 3 views
17

현재 이스탄불은 내 테스트에서 사용되는 파일에 대해서만 적용 범위를 생성합니다. 이는 괜찮 았지만 범위가 다소 좁아지는 것 같습니다. 이스탄불에서 내 모든 소스 코드에 대한 적용 범위를 생성하는 방법은 무엇입니까?

난 더 이스탄불 구성이 없으며, 다음과 같은 스크립트 문자열 npm test 통해 호출 오전 :

$ istanbul cover _mocha -- -R dot --check-leaks --recursive test/

내 소스 코드의 모든 범위를 생성하는 방법이 있나요?

+0

이 스레드가 도움이 될 수도 있습니다. http://stackoverflow.com/questions/22702578/full-gulp-istanbul-coverage-report/26418759#26418759 (하지만 꿀꺽 마심을 사용해야합니다.) gulp없이 includeUntested 옵션을 사용하면 도움이됩니다 (https://github.com/SBoudrias/gulp-istanbul#includeuntested). – Anastasia

+0

유망 해 보입니다. 감사합니다! – Seer

답변

16

대답, 나는 내가 선택한 디렉토리 구조 날이 옵션을 사용할 수 있습니다,하지만 내 테스트 명령은 이제 것을 부분적으로 운이 좋은 것 같아요 찾았

$ istanbul --include-all-sources cover _mocha -- -R dot --recursive test/

--include-all-sources가 중요하다 부품.

+1

이것은 가능하다고 생각하지만, --include-all-sources는 모카 용입니다. 맞습니까? 디렉토리 구조는 무엇입니까? 나는 여전히 이것을 작동 시키려고 노력하고있다. : ( – Stretch

+0

--include-all-sources는 런타임에서 충돌 한 것뿐만 아니라 프로젝트의 모든 .js 파일을 카운트한다? –

+1

이것은 나를 위해 일하지만 커버한다. 내 전체 작업 디렉토리. 내'src' 폴더에 대해서만 어떻게 커버리지를 알 수 있습니까? –

0

이스탄불은 코드 적용 범위를 확인하기 위해 nyc을 사용할 것을 권장합니다. 다음과 같은 접근 방식을 제안합니다 :

nyc mocha 

이 명령을 실행하면 범위 보고서가 생성됩니다. 그러나 몇 가지 함정이 있습니다.

기본적으로 mochatest 폴더의 테스트를 찾고 있습니다. 그것을 무시하기 위해, 우리는 다음과 같은 파일 mocha.opts 우리 자신의 경로를 설정해야합니다 :

spec/unit/back-end/**/*.spec.js 

또 다른 문제가 기본적으로 nyc 검사입니다 :

nyc mocha --opts ./mocha.opts 

그리고 mocha.opts 예를 들어 같은 코드를 포함 귀하의 질문에 대해서만 필요한 파일의 범위를 커버합니다. 해결 방법은 nyc에 대한 두 가지 옵션을 설정하는 것입니다 (test를 npm 스크립트로 실행하므로 package.json에 옵션을 설정합니다). 여기에 코드입니다 :

"nyc": { 
    "all": true, 
    "include": [ 
    "routes/*.js", 
    "routes/**/*.js", 
    "models/*.js" 
    ] 
}, 
"scripts": { 
    "mocha": "nyc mocha --opts ./mocha.opts", 
} 

을 달성하기 위해 또 다른 방법은 없습니다 include을 설정하는 것입니다,하지만 순서 exclude 옵션 부적절한 파일을 확인 범위에서 제외 할 수 있습니다. 이상한 일이지만 유일한 옵션 인 all이 작동하지 않으면 include 또는 exclude 옵션이 필요합니다. nyc --help을 통해 nyc 옵션에 대해 자세히 알아볼 수 있습니다.

P. 나는 nycmocha을 깊이 알지 못한다. 나는 단지 내 경험에 기초하고있다.