mocha에서 Promise 테스트 작성하기
JavaScript에서 테스트를 작성할 때 테스트 프레임워크로 mocha를 주로 사용하는 편이다. 특히 Node.js에서는 비동기 작업을 많이 있으므로 테스트에서도 비동기 테스트를 작성해야 하는데 보통 다음과 같이 작성한다.
1 2 3 4 5 6 7 8 9 10 11 |
|
위처럼 테스트의 콜백에 done 파라미터를 지정하면 이 테스트는 done이 호출되기 전까지는 테스트가 끝나지 않는다.(done이 호출되지 않으면 타임아웃으로 실패한다.) 꽤 오래전에는 비동기 테스트를 작성하기가 상당히 어려웠는데 done방식을 사용하면 쉽게 테스트를 작성할 수 있다. done은 it뿐만 아니라 before, beforeEach, after, afterEach에서도 똑같이 사용할 수 있다.
만약 테스트하는 함수가 콜백 방식이 아니라 Promise를 사용한다면 다음과 같이 테스트를 작성할 수 있다.
1 2 3 4 5 6 7 8 9 10 |
|
이렇게 작성해도 문제는 전혀 없지만, mocha에서 Promise 테스트를 지원하므로 훨씬 더 간단하게 테스트를 작성할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
done을 쓰는 대신 Promise 객체를 반환하면 알아서 Promise.resolve와 Promise.reject에 따라 테스트를 성공과 실패로 처리해 준다. 이 방식은 작성해 보면 테스트보다는 로직 없이 정리작업을 하는 before, after처럼 테스트 전, 후 작업에 더 편리하다.
1 2 3 4 5 |
|
테스트에서 사용하는 경우에는 Promise를 반환할 수 있다면 위처럼 작성할 수 있다. 보통의 assert 라이브러리는 Promise를 지원하지 않으므로 값을 확인해야 하는 경우에는 done 방식을 사용해야 하지만 chai-as-promised나 should-promised처럼 assert 라이브러리에 Promise를 지원하는 라이브러리를 함께 사용해야 위처럼 사용할 수 있다.
Comments