상세 컨텐츠

본문 제목

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

본문

728x90

상황

테스트코드에서 테스트를 실행하니 이와 같은 오류가 나온다.

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

 

원인

each function(test) has a default timeout limit for 2 seconds (2000ms).
-> When our tests run longer than 2000ms, then the timeout reaches maximum limit and breaks the tests.

 

해결 방안 2가지

1. 2초 안에 테스트가 실행되도록 하기

2. 테스트 시간을 늘려주기

 

테스트 시간을 늘려준다면,

아래와같이 테스트코드 내에서 describe 블록 안에 넣어주거나 or 전역으로 늘려준다면 package.json에서 늘려주면 된다. 

 

다시 문제 상황

describe 블록 안에 시간 추가하는 함수를 적어주었는데, TypeError: this.timeout is not a function 오류가 난다. 

 

원인

- ES6 의 화살표 함수를 사용할 시에는 this.timeout가 오류가 난다고 한다. 

 

describe('foo', () => {
  this.timeout(100);
});

# => TypeError: this.timeout is not a function

 

그래서 아래와 같이 고쳐줘야 하는데.... 

describe('foo', function() {
  this.timeout(100);
});

 

 

 


 

 

진짜 해결책 

time을 늘리는 것은 옳은 처사가 아님.

다른 곳을 고쳐서'본질'을 해결해주도록 하자.  

cf) 지금 나의 경우에는 transaction 함수식을 고쳐주는 식으로 해결. 

 

 

 

 

 

출처

해결 방안 2가지

https://pramod-mallick.medium.com/mocha-with-selenium-webdriver-exception-timeout-of-2000ms-exceeded-89df7b6230c6

 

다시 문제  상황 원인 :

https://github.com/mochajs/mocha/issues/2018

728x90
반응형

관련글 더보기