[node.js] Mocha를 통한 코드 커버리지

NodeJS 애플리케이션을 테스트하기 위해 Mocha를 사용하고 있습니다. 코드 범위 기능을 사용하는 방법을 알 수 없습니다. 인터넷 검색을 시도했지만 적절한 자습서를 찾지 못했습니다. 도와주세요.



답변

코드 커버리지를위한 추가 라이브러리가 필요하며, 얼마나 강력하고 쉬운 이스탄불 인지 알 수 있습니다. 모카 테스트를 통과 한 후 다음을 시도하십시오.

npm install nyc

이제 nyc 명령을 기존 테스트 명령 앞에 두십시오.

{
  "scripts": {
    "test": "nyc mocha"
  }
}


답변

이제 ( 2020 ) 이스탄불 을 사용하는 기본 방법“최신 명령 줄 인터페이스” nyc를 사용하는 것 입니다.

설정

먼저 프로젝트에 설치하십시오.

npm i nyc --save-dev

그런 다음 npm 기반 프로젝트가있는 경우 package.json 파일 의 scripts객체 내부에서 테스트 스크립트를 변경 하여 mocha의 코드 적용 범위를 실행하십시오. 테스트 .

{
  "scripts": {
    "test": "nyc --reporter=text mocha"
  }
}

운영

이제 테스트를 실행하십시오

npm test

테스트 출력 직후 콘솔에 다음과 같은 표가 표시됩니다.

이스탄불 뉴욕 모카 코드 커버리지

커스터마이징

HTML 보고서

그냥 사용

nyc --reporter=html

대신에 text. 이제 내부에 보고서를 작성합니다 ./coverage/index.html.

보고서 형식

이스탄불은 광범위한 보고서 형식을 지원합니다. 그냥 그 살펴 보고 라이브러리 당신을 위해 가장 유용 할 수 있습니다. --reporter=REPORTER_NAME원하는 각 형식 에 대한 옵션을 추가하십시오 . 예를 들어

nyc --reporter=html --reporter=text

콘솔과 html 보고서가 모두 있습니다.

NPM 테스트로 적용 범위를 실행하지 마십시오

다른 스크립트를 추가 package.json하고 test테스트 러너 (예 : 모카) 만 사용하여 스크립트를 그대로 두십시오 .

{
  "scripts": {
    "test": "mocha",
    "test-with-coverage": "nyc --reporter=text mocha"
  }
}

이제이 커스텀 스크립트를 실행하십시오

npm run test-with-coverage

코드 범위로 테스트를 실행합니다.

코드 범위가 낮은 경우 강제 테스트 실패

총 코드 범위가 90 % 미만이면 실패합니다.

nyc --check-coverage --lines 90 

하나 이상의 파일의 코드 적용 범위가 90 % 미만이면 실패합니다.

nyc --check-coverage --lines 90 --per-file


답변

Blanket.js도 완벽하게 작동합니다.

npm install --save-dev blanket

test / tests.js 앞에서

require('blanket')({
    pattern: function (filename) {
        return !/node_modules/.test(filename);
    }
});

운영 mocha -R html-cov > coverage.html


답변