JooTC
nodejs-logo-2019-blue-green

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이 에러 메시지가 발생하며 실행이 되지 않는 경우가 있습니다.

Error: Resolution method is overspecified. Specify a callback * or * return a Promise; not both.

이 문제는 아래와 같은 코드에서 발생합니다.

describe('User', async () => {
  it('should save without error', async (done) => {
    const user = new User('Luna');

    await user.save(done);

    done();
  });
});

async/await을 사용하여 작업을 처리하는 것과 done() 콜백을 동시에 사용하여서 발생하는 문제입니다. done은 콜백을 사용하여 테스트 완료를 처리하는데, 이 방법을 사용할 때는 async/await을 함께 사용하지 못하기 때문입니다.

가능한 경우 done 콜백 대신 아래와 같이 async/await을 사용합니다.

describe('User', function () {
  it('should save without error', async (done) => {
    const user = new User('Luna');

    await user.save(done);

    done();
  });
});

또는 아래와 같이 Promise 객체를 리턴하도록 코드를 변경할 수 있습니다.

describe('User', function () {
  it('should save without error', function () {
    return new Promise((resolve) => {
      const user = new User('Luna');

      user.save(done).then(() => {
        resolve();
      });
    });
  });
});

구독
알림
guest

0 Comments
Inline Feedbacks
모든 댓글 보기
0
이 포스트에 대한 의견을 남겨주세요!x