it-source

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

criticalcode 2023. 6. 25. 20:09
반응형

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

Mocha는 다음에서 테스트 파일을 찾으려고 합니다.testdir( "dir" "dir" "dir" "dir")를 해야 ?server-test?

사용:

mocha server-test

또는 하위 디렉터리가 있는 경우 다음을 사용합니다.

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

큰따옴표를 사용합니다.이러한 항목을 생략하면 하위 디렉터리에서 테스트를 실행할 수 없습니다.

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


만약 당신이 여전히 달리기만 해서 그것을 하고 싶다면.mocha를 실행하려고 테스트를 했습니다../server-tests./test에 파일 ./test/mocha.opts파일에 이것만 있으면 됩니다.

server-tests

이 그 폴더와 디렉터리에 것을 , 을 해폴및더하디의모리이에 넣으세요.test/mocha.opts

server-tests
--recursive

mocha.opts이므로 첫 줄을 "" " " " " 로부터. 따라서 첫 번째 줄을 테스트를 변경하려는 디렉터리로 만듭니다../test/

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

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

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

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

이렇게 하는 좋은 방법은 패키지에 "테스트" npm 스크립트를 추가하는 것입니다.올바른 주장으로 모카를 부르는 json.이쪽으로 오세요.json은 또한 검정 구조를 설명합니다.또한 다른 답변(더블 따옴표 대 단일 따옴표, "찾기" 등)에서 교차 플랫폼 문제를 모두 방지합니다.

mocha가 "test" 디렉터리에 있는 모든 js 파일을 실행하도록 하려면:

"scripts": {
    "start": "node ./bin/www", -- not required for tests, just here for context
    "test": "mocha test/**/*.js"
  },

그런 다음 연기 테스트 호출만 실행하려면 다음과 같이 하십시오.

npm test

이러한 방식으로 모든 프로젝트의 모든 테스트 실행을 표준화할 수 있으므로 새로운 개발자가 프로젝트를 시작할 때 "npm 테스트"가 테스트를 실행한다는 것을 알 수 있습니다.이것에 대한 좋은 역사적 선례가 있습니다(예를 들어, 메이븐, 대부분의 오래된 학교도 프로젝트를 "만듭니다").모든 프로젝트가 동일한 테스트 명령을 가질 때 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

여기 패턴 보이시죠?좋습니다. :) 일관성이 무라를 물리칩니다.

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

옵션 1: 프로젝트의 루트 디렉터리에 생성:

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

옵션 2: 프로젝트에서 속성 추가:

{
  ...

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

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

-g 또는 --grep 옵션을 사용하지 마십시오. 이 패턴은 파일 시스템이 아니라() 내부의 테스트 이름에서 작동합니다.현재 문서는 이와 관련하여 오해의 소지가 있거나 완전히 잘못된 것입니다.전체 명령을 파일 시스템의 일부로 제한하려면 패턴을 마지막 인수(플래그가 아님)로 전달할 수 있습니다.

예를 들어, 이 명령어는 리포터를 지정하도록 설정하지만 서버 테스트 디렉토리의 바로 안쪽에 있는 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 링크를 참조하십시오.

의 모든 test_directory 하포함리와 일치하는 하위 test.js

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

또는 를 사용합니다.--recursive 스치위

mocha --recursive test_directory/

나는 방금 이 문제를 가지고 있었고 그것을 제거함으로써 해결했습니다.--recursive옵션(내가 설정한 것)과 위에서 제안한 동일한 구조를 사용합니다.

mochify "test/unit/**/*.js"

모든 디렉토리에서 다음과 같은 모든 테스트를 실행했습니다./test/unit/내부의 다른 디렉터리를 무시한 채로 나를 위해./test/

@superjos가 댓글 사용에서 언급한 것처럼.

mocha --recursive "some_dir"

Windows 7에서 node.js v0.10.0과 mocha v1.8.2 및 npm v1.2.14를 사용하고 있습니다.나는 단지 모카가 내 시험을 찾기 위해 경로 테스트/유닛을 사용하도록 하려고 했다, 내가 착륙한 몇 가지 일에 너무 오래 소비하고 시도한 후,

"test/unit/*.js" 옵션은 창에서 사용할 수 없습니다.윈도우 셸이 unixen처럼 와일드카드를 확장하지 않는 것은 좋은 이유입니다.

그러나 "test/unit"를 사용하면 파일 패턴 없이도 작동합니다."mocha test/unit"은 test/unit 폴더에 있는 모든 파일을 실행합니다.

이렇게 하면 하나의 폴더 파일만 테스트로 실행되지만 여러 디렉터리 이름을 매개 변수로 전달할 수 있습니다.

또한 단일 테스트 파일을 실행하기 위해 전체 경로와 파일 이름을 지정할 수 있습니다.예: "mocha test/unit/my test1.js"

저는 실제로 패키지로 설정했습니다.json for npm "test": {"test": "mocha test/unit"},

그래서 그 'npm test'는 제 유닛 테스트를 실행합니다.

사용 중인 경우nodejs당신의package.json아래scripts

  1. 위해서global (-g)설치:"test": "mocha server-test"또는"test": "mocha server-test/**/*.js"하위 문서의 경우
  2. 위해서project설치:"test": "node_modules/mocha/bin/mocha server-test"또는"test": "node_modules/mocha/bin/mocha server-test/**/*.js"하위 문서의 경우

그러면 그냥 정상적으로 테스트를 실행합니다.npm test

이것은 테스트 디렉토리 변경에 대한 "쉬운" 지원이 아닌 것 같습니다.
하지만, 당신의 질문과 관련하여 이 문제를 살펴봐야 할 것 같습니다.

@jeff-dickey가 제안했듯이 프로젝트의 루트에서 다음과 같은 폴더를 만듭니다.test해당 폴더에서 다음 파일을 만듭니다.mocha.optsJeff의 답변을 개선하기 위해 노력한 결과, 테스트 폴더의 이름을 하나만 지정하는 대신 다음 행을 추가하여 프로젝트에서 실행할 모든 테스트를 찾는 패턴을 지정했습니다.

*/tests/*.js --recursivemocha.opts

대신 테스트를 검색할 정확한 폴더를 지정하려면 다음과 같은 작업을 수행했습니다.

shared/tests/*.js --recursive
server/tests/graph/*.js --recursive

이것이 다른 답변보다 더 필요한 사람에게 도움이 되기를 바랍니다.

창의 다른 옵션은 다음과 같습니다.cross-env패키지 및 후속 npm 스크립트package.json

"scripts": {
    "test": "cross-env mocha '*.test.js'"
  },
"devDependencies": {
    "cross-env": "latest",
}

이 경우 루트 폴더에 *.test.js 패턴이 있는 모든 테스트 파일이 mocha에 의해 실행됩니다.

언급URL : https://stackoverflow.com/questions/10753288/how-to-specify-test-directory-for-mocha

반응형