모카를 사용한 코드 적용 범위
노드 테스트에 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
'programing' 카테고리의 다른 글
Python panda, 열 레이블 없이 엑셀 파일을 읽고 열 레이블을 삽입하려면 어떻게 해야 합니까? (0) | 2023.05.18 |
---|---|
반환 키를 사용하여 UITextView용 키보드를 해제하는 방법은 무엇입니까? (0) | 2023.05.18 |
Azure SDK 2.5.1이 cloudService를 게시하지 못함 (0) | 2023.05.18 |
UNit TestCase의 매개 변수로 에서 큰따옴표를 피하는 방법은 무엇입니까? (0) | 2023.05.18 |
목록에서 항목의 위치를 가져오는 방법은 무엇입니까? (0) | 2023.05.18 |