답변:
편집 :이 옵션은 더 이상 사용되지 않습니다 : https://mochajs.org/#mochaopts
mocha
명령 행에서 계속 실행 하면서을 ./server-tests
대신 하여 폴더에서 테스트를 실행하려면 ./test
파일에서 다음 ./test/mocha.opts
과 같이 파일을 작성 하십시오.
server-tests
해당 폴더와 하위 디렉토리의 모든 것을 실행하려면 다음을 입력하십시오. test/mocha.opts
server-tests
--recursive
mocha.opts
인수는 명령 행을 통해 전달되므로 첫 번째 행을 테스트를 변경하려는 디렉토리로만 변경하면 ./test/
mocha.opts
파일을 원하는 곳에 배치 할 수 있다는 대답에 추가 할 가치가있을 것입니다. mocha
예를 들어 다음과 같이 구성 파일 경로를 지정하면됩니다.mocha --opts ./mocha.opts
이것을 사용하십시오 :
mocha server-test
또는 하위 디렉토리가있는 경우 다음을 사용하십시오.
mocha "server-test/**/*.js"
큰 따옴표를 사용하십시오. 이를 생략하면 하위 디렉토리에서 테스트를 실행하지 못할 수 있습니다.
mocha test/server-test
mocha ./**/*.test.js
(테스트 파일을 모듈 파일과 함께 배치 할 수 있습니다). 파일 테스트에서 나머지 테스트와 다른 레벨로 테스트 파일을 추가했을 때 패턴이 작동하지 않고 계층에서 동일한 레벨에 살았던 수십 개의 다른 파일이 아닌 홀수 볼 파일 만 발견합니다. . 따옴표로 묶으면 문제가 해결되었습니다.
--recursive
아래 설명과 같이 사용하십시오
테스트 폴더에 하위 폴더가있는 경우 한 가지 방법이 있습니다.
/test
/test/server-test
/test/other-test
그런 다음 리눅스에서 find 명령을 사용하여 모든 * .js 파일을 재귀 적으로 나열하고 mocha에 전달할 수 있습니다.
mocha $(find test -name '*.js')
--recursive
아래 설명과 같이 사용하십시오
mocha
, config에서 원하는 디렉토리 구조를 설정하는 옵션이 없습니까?
이를 수행하는 좋은 방법은 package.json에 "test"npm 스크립트를 추가하여 올바른 인수로 mocha를 호출하는 것입니다. 이런 식으로 package.json은 테스트 구조를 설명합니다. 또한 다른 답변 (이중 대 작은 따옴표, "찾기"등)에서 모든 플랫폼 간 문제를 피합니다.
"test"디렉토리에서 모든 js 파일을 mocha가 실행하도록하려면 다음을 수행하십시오.
"scripts": {
"start": "node ./bin/www", -- not required for tests, just here for context
"test": "mocha test/**/*.js"
},
그런 다음 연기 테스트 호출 만 실행하려면 다음을 수행하십시오.
npm test
이러한 방식으로 모든 프로젝트에서 모든 테스트 실행을 표준화 할 수 있으므로, 새로운 개발자가 프로젝트 또는 다른 프로젝트에서 시작할 때 "npm 테스트"가 테스트를 실행할 것임을 알고 있습니다. 이것에 대한 역사적 우선 순위가 좋습니다 (예를 들어, 대부분의 오래된 학교 "make"프로젝트). 모든 프로젝트가 동일한 테스트 명령을 가지고있을 때 CI에 도움이됩니다.
마찬가지로, 모카를 실행하기를 원하는 더 빠른 "연기"테스트의 하위 집합이있을 수 있습니다.
"scripts": {
"test": "mocha test/**/*.js"
"smoketest": "mocha smoketest/**/*.js"
},
그런 다음 연기 테스트 호출 만 실행하려면 다음을 수행하십시오.
npm smoketest
또 다른 일반적인 패턴은 테스트 한 소스와 동일한 디렉토리에 테스트를 배치하지만 테스트 파일 * .spec.js를 호출하는 것입니다. 예를 들어, src / foo / foo.js는 src / foo / foo.spec.js에 의해 테스트됩니다.
규칙에 따라 * .spec.js라는 모든 테스트를 실행하려면 다음을 수행하십시오.
"scripts": {
"test": "mocha **/*.spec.js"
},
그런 다음 모든 테스트 호출을 실행하십시오.
npm test
여기서 패턴을 보시겠습니까? 좋은. :) 일관성은 무라를 물리칩니다 .
-g 또는 --grep 옵션을 사용하지 마십시오. 해당 패턴은 파일 시스템이 아닌 그 내부의 테스트 이름에서 작동합니다. 현재 문서가 이와 관련하여 오도되거나 명백히 잘못되었습니다. 전체 명령을 파일 시스템의 일부로 제한하기 위해 패턴을 마지막 인수 (플래그가 아님)로 전달할 수 있습니다.
예를 들어이 명령은 리포터를 spec으로 설정하지만 server-test 디렉토리 내부에서 js 파일 만 즉시 테스트합니다.
mocha --reporter spec server-test/*.js
이 명령은 위와 동일하게 수행되며 테스트의 it () 문자열 / 정의가 "Fnord :"로 시작하는 테스트 케이스 만 실행합니다.
mocha --reporter spec --grep "Fnord:" server-test/*.js
이제 일 (2020 년)에 mocha 구성 파일을 사용하여이를 처리 할 수 있습니다 .
1 단계 : 애플리케이션 의 루트 위치 에 .mocharc.js 파일 작성
2 단계 : mocha 구성 파일에 아래 코드 를 추가 하십시오.
'use strict';
module.exports = {
spec: 'src/app/**/*.test.js'
};
구성 파일의 추가 옵션에 대해서는 다음 링크를 참조하십시오. https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
node.js v0.10.0 및 mocha v1.8.2 및 npm v1.2.14를 사용하는 Windows 7을 사용하고 있습니다. 나는 길을 잃고 몇 가지를 시도한 후 경로 테스트 / 단위를 사용하여 테스트를 찾기 위해 모카를 얻으려고했습니다.
"test / unit / *. js"옵션 사용은 Windows에서 작동하지 않습니다. Windows 쉘이 unixen과 같은 와일드 카드를 확장하지 않는 이유가 있습니다.
그러나 파일 패턴없이 "test / unit"을 사용하면 작동합니다. 예. "mocha test / unit"은 test / unit 폴더에있는 모든 파일을 실행합니다.
이것은 여전히 하나의 폴더 파일을 테스트로 실행하지만 여러 디렉토리 이름을 매개 변수로 전달할 수 있습니다.
또한 단일 테스트 파일을 실행하려면 전체 경로와 파일 이름을 지정할 수 있습니다. 예. "mocha test / unit / mytest1.js"
실제로 npm "scripts"에 대해 package.json에서 설정했습니다 : { "test": "mocha test / unit"},
'npm test'는 단위 테스트를 실행합니다.
--recursive
다음과 같은 옵션을 사용할 수 있습니다 .mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
Windows에서 작동합니다. 또한 node_modules\.bin\mocha "**\*.js"
작동합니다 (내 실제 사례). 그러나 node_modules 디렉토리 를 제외시키는 방법을 찾고 있습니다. (gulpfile.js도 사용하지만 언젠가 mocha로 직접 테스트를 시작해야합니다)
당신이 사용하는 경우 nodejs
, 당신의 package.json
아래scripts
global (-g)
설치 : "test": "mocha server-test"
또는 "test": "mocha server-test/**/*.js"
하위 문서에 대한project
설치 : "test": "node_modules/mocha/bin/mocha server-test"
또는 "test": "node_modules/mocha/bin/mocha server-test/**/*.js"
하위 문서에 대한그런 다음 테스트를 정상적으로 실행하십시오. npm test
npm run mocha "./test/*.spec.js!(~)"
glob 논쟁 을 무시하지만 찾지 node_modules/.bin/mocha "./test/*.spec.js!(~)"
는 않습니다.
npm run mocha -- yourArgs
@ jeff-dickey가 제안했듯이 프로젝트의 루트에라는 폴더를 만드십시오 test
. 해당 폴더에서이라는 파일을 만듭니다 mocha.opts
. 이제 Jeff의 대답을 향상 시키려고 노력한 곳에서 하나의 테스트 폴더 이름을 지정하는 것이 아니라 다음 줄을 추가하여 프로젝트에서 실행할 모든 테스트를 찾는 패턴을 지정했습니다.
*/tests/*.js --recursive
에 mocha.opts
테스트를 위해 정확한 폴더를 지정하려면 다음과 같이하십시오.
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
이것이 다른 답변이 제공하는 것보다 더 필요한 사람에게 도움이되기를 바랍니다.
.only
및.skip
관리 방법이 나와 있습니다 실행 중입니다. 전체 테스트 스위트가 항상 실행되기를 원하지 않는 특정 기능 개발 중 중요합니다.