[javascript] 모카의 기본 시간 초과 변경

단위 테스트 파일 my-spec.js가 있고 mocha로 실행중인 경우 :

mocha my-spec.js

기본 시간 초과는 2000ms입니다. 명령 줄 매개 변수를 사용하여 부분 테스트를 위해 덮어 쓸 수 있습니다.

mocha my-spec.js --timeout 5000

모든 테스트에 대해 기본 시간 초과를 전체적으로 변경할 수 있습니까? 즉, 다음과 같이 호출하면 기본 시간 초과 값이 2000ms와 다릅니다.

mocha my-spec.js



답변

기본적으로 Mocha는 test/mocha.opts명령 행 인수를 포함 할 수 있는 파일을 읽습니다 . 따라서 다음을 포함하는 파일을 만들 수 있습니다.

--timeout 5000

명령 행에서 Mocha를 실행할 때마다이 파일을 읽고 기본적으로 5 초의 시간 종료를 설정합니다.

상황에 따라 더 좋은 또 다른 방법은 describe테스트 파일의 최상위 호출에서 다음 과 같이 설정하는 것입니다 .

describe("something", function () {
    this.timeout(5000);

    // tests...
});

이렇게하면 파일 단위로만 시간 초과를 설정할 수 있습니다.

전역 기본값 5000을 원하지만 일부 파일에 대해 다르게 설정하는 경우 두 방법을 모두 사용할 수 있습니다.


일반적으로 전화를 걸 this.timeout거나 화살표가 this설정된 모카 의 다른 멤버에 액세스 하려면 화살표 기능을 사용할 수 없습니다 . 예를 들어, 이것은 일반적으로 작동하지 않습니다 :

describe("something", () => {
    this.timeout(5000); //will not work

    // tests...
});

이는 화살표 함수가 this함수가 나타나는 범위에서 가져 오기 때문 입니다. Mocha는 적절한 값으로 함수를 호출 this하지만 해당 값은 화살표 함수 내부로 전달되지 않습니다. Mocha 문서는 이 주제 에 대해 말합니다 .

화살표 기능 ( “람다”)을 모카에 전달하는 것은 권장되지 않습니다. 이 어휘 바인딩으로 인해 이러한 함수는 Mocha 컨텍스트에 액세스 할 수 없습니다.


답변

정답에 추가하면 다음과 같이 화살표 기능으로 시간 초과를 설정할 수 있습니다.

it('Some test', () => {

}).timeout(5000)


답변

완전성을 위해 이것을 추가합니다. package.json파일 에서 스크립트를 사용하는 경우 --timeoutmocha에 옵션을 추가하십시오 .

"scripts": {
  "test": "mocha 'test/**/*.js' --timeout 10000",
  "test-debug": "mocha --debug 'test/**/*.js' --timeout 10000"
},

그런 다음 npm run test시간 제한을 10,000 밀리 초로 설정하여 테스트 스위트를 실행 하도록 실행할 수 있습니다 .


답변

현재 버전의 Mocha에서 시간 초과는 다음과 같이 전역 적으로 변경 될 수 있습니다.

mocha.timeout(5000);

테스트 스위트의 어느 곳이든, 사양의 상단 또는 별도의 테스트 도우미에서 위의 행을 추가하십시오.


이전 버전에서는 브라우저에서만을 사용하여 전역 구성을 변경할 수 있습니다 mocha.setup.

mocha.setup({ timeout: 5000 });

문서 는 글로벌 시간 초과 설정을 다루지 않지만 다른 일반적인 시나리오에서 시간 초과를 변경하는 방법에 대한 몇 가지 예를 제공합니다.


답변