programing

mocha의 기본 시간 초과 변경

yoursource 2022. 12. 11. 10:34
반응형

mocha의 기본 시간 초과 변경

유닛 테스트파일 my-spec.js가 있고, mocha로 실행되고 있는 경우:

mocha my-spec.js

기본 타임아웃은 2000밀리초입니다명령줄 매개 변수를 사용하여 부분 테스트용으로 덮어쓸 수 있습니다.

mocha my-spec.js --timeout 5000

모든 테스트에 대해 디폴트타임아웃을 글로벌하게 변경할 수 있습니까?즉, 다음과 같이 호출할 때 디폴트타임아웃 값은 2000밀리초와 다릅니다.

mocha my-spec.js

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

--timeout 5000

명령줄에서 Mocha를 실행하면 이 파일이 읽혀지고 기본적으로는 타임아웃이 5초로 설정됩니다.

상황에 따라서는 이렇게 설정하는 것이 좋을지도 모릅니다.describe테스트 파일을 호출합니다.

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

    // tests...
});

그러면 파일 단위로만 타임아웃을 설정할 수 있습니다.

글로벌 기본값을 5000으로 설정하고 일부 파일에 대해 다른 설정을 할 경우 두 가지 방법을 모두 사용할 수 있습니다.


전화를 걸 때는 일반적으로 화살표 기능을 사용할 수 없습니다.this.timeout(또는 다른 멤버에 접속할 수 있습니다.thisMocha가 설정해 줍니다).예를 들어, 이것은 통상 동작하지 않습니다.

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 });

매뉴얼에서는 글로벌타임아웃 설정에 대해서는 설명하지 않지만 다른 일반적인 시나리오에서 타임아웃을 변경하는 방법에 대해 몇 가지 예를 제시합니다.

언급URL : https://stackoverflow.com/questions/23492043/change-default-timeout-for-mocha

반응형