공부/Vue.js

[Vue.js] 단위 테스트 - 모의(Mock) 함수

도리암 2022. 4. 18. 21:31

위와 같은 테스트에서 중요한 것은 무엇일까?

바로 res의 return값이 Done! 인지를 파악하는 것이 핵심이다.

그 외에 8초를 기다린다던지 하는 요소는 부가적인 요소이다.

 

따라서 6초를 기다리지 않고 로직에서 바로 Done!이 도출되는 지를 확인할 수 있다면 테스트를 더 빨리 끝낼 수 있다.

 

모의함수 적용 전 결과

모의함수 적용

전역 객체인 jest의 .spyOn 메소드와 .mockResolvedValue 메소드를 이용하여

모의함수를 적용할 함수와 그 함수가 반환할 값을 지정해준다.

실행시간을 보면 4.127초로 11.188초에서 확연히 실행시간이 줄어든 것이 확인된다.

 

실제 적용해보기

위 함수는 영화 'Frozen II'의 영화 제목을 앞글자를 제외하고 전부 소문자로 바꿔주는 로직을 가지고 있다.

여기서 만약 네트워크 장애 등의 이유로 응답이 제대로 도착하지 않는다면 오류가 발생한다.

 

주요 테스트 대상 기능은, 영화 제목을 가져오는 기능이 아니라 제목을 소문자로 바꿔주는 기능이다.

따라서 영화제목을 가져오는 기능을 모의함수를 통해 임의로 제공하면 네트워크 요청 없이 테스트가 가능하다.

모의함수 적용 전

만약 네트워크가 없다면 테스트는 실패하게 된다.

모의함수 적용 후

jest.fn()을 사용하여 axios.get을 정의해준다.

axios.get을 테스트환경에서 재선언하여 example.js에서 axios.get을 실행하면 모의함수를 실행할수 있게 만들어준다.

이렇게 하면 네트워크가 없어도 테스트가 제대로 동작한다.