programing

모카를 사용한 코드 적용 범위

cafebook 2023. 5. 18. 23:50
반응형

모카를 사용한 코드 적용 범위

노드 테스트에 Mocha를 사용하고 있습니다.JS 애플리케이션.코드 적용 범위 기능을 사용하는 방법을 알 수 없습니다.나는 그것을 검색해 보았지만 적절한 튜토리얼을 찾지 못했습니다.제발 도와주세요.

코드 커버리지를 위해 추가 라이브러리가 필요하며, 이스탄불이 얼마나 강력하고 쉬운지에 깜짝 놀랄 것입니다.모카 테스트를 통과한 후 다음을 시도합니다.

npm install nyc

이제 기존 테스트 명령 앞에 nyc 명령을 배치하기만 하면 됩니다. 예:

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

현재(2023년) 이스탄불을 사용하는 선호되는 방법은 "최첨단 명령줄 인터페이스" nyc를 사용하는 것입니다.

세우다

먼저 프로젝트에 설치합니다.

npm i nyc --save-dev

그런 다음, 만약 당신이 npm 기반의 프로젝트를 가지고 있다면, 단지 내부의 테스트 스크립트를 변경합니다.scripts패키지의 개체입니다.모카 테스트의 코드 적용 범위를 실행하는 json 파일:

{
  "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테스트 러너만 사용하는 스크립트(예: mocha):

{
  "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

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

npm install --save-dev blanket

당신의 시험 앞에서

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

달려.mocha -R html-cov > coverage.html

ESM 모듈을 사용하는 경우 허용된 답변(nyc)이 작동하지 않습니다.

C8은 내장된 노드를 활용하는 현재 최고의 솔루션으로 보입니다.JS는 이스탄불(예: nyc)을 기능하고 활용하며 동일한 구성 파일을 공유합니다.

npm install -g c8
c8 mocha

구성에 .nycrc를 사용합니다.사용하는 샘플 구성은 다음과 같습니다.

{
    "all": true,
    "exclude": ["test"],
    "output": "reports",
    "reporter" : [
        "html",
        "text"
    ]
}

(참고: https://stackoverflow.com/a/69846825/1949430) 의 다른 질문에 대한 답변으로 c8을 가리켰습니다.

언급URL : https://stackoverflow.com/questions/16633246/code-coverage-with-mocha

반응형