[unit-testing] 모카에 대한 테스트 디렉토리를 지정하는 방법은 무엇입니까?

Mochatest기본적으로 테스트 파일을 찾으려고합니다 . 예를 들어 다른 디렉토리를 어떻게 지정 server-test합니까?



답변

편집 :이 옵션은 더 이상 사용되지 않습니다 : https://mochajs.org/#mochaopts


mocha명령 행에서 계속 실행 하면서을 ./server-tests대신 하여 폴더에서 테스트를 실행하려면 ./test파일에서 다음 ./test/mocha.opts과 같이 파일을 작성 하십시오.

server-tests

해당 폴더와 하위 디렉토리의 모든 것을 실행하려면 다음을 입력하십시오. test/mocha.opts

server-tests
--recursive

mocha.opts 인수는 명령 행을 통해 전달되므로 첫 번째 행을 테스트를 변경하려는 디렉토리로만 변경하면 ./test/


답변

이것을 사용하십시오 :

mocha server-test

또는 하위 디렉토리가있는 경우 다음을 사용하십시오.

mocha "server-test/**/*.js"

큰 따옴표를 사용하십시오. 이를 생략하면 하위 디렉토리에서 테스트를 실행하지 못할 수 있습니다.


답변

테스트 폴더에 하위 폴더가있는 경우 한 가지 방법이 있습니다.

/test
/test/server-test
/test/other-test

그런 다음 리눅스에서 find 명령을 사용하여 모든 * .js 파일을 재귀 적으로 나열하고 mocha에 전달할 수 있습니다.

mocha $(find test -name '*.js')


답변

이를 수행하는 좋은 방법은 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


답변

node.js 인 경우 Mocha v6 의 일부 새로운 구성 :

옵션 1 : .mocharc.json프로젝트의 루트 디렉토리에서 작성하십시오 .

{
  "spec": "path/to/test/files"
}

옵션 2 : mocha프로젝트의 속성 추가 package.json:

{
  ...

  "mocha": {
    "spec": "path/to/test/files"
  }
}

더 많은 옵션이 여기 있습니다 .


답변

test_directory일치하는 하위 디렉토리를 포함하여 모든 파일을 실행하십시오.test.js

find ./parent_test_directory -name '*test.js' | xargs mocha -R spec

또는 --recursive스위치를 사용

mocha --recursive test_directory/