포시코딩

[Jest] mockImplementation, mockResolvedValue 본문

Test Case

[Jest] mockImplementation, mockResolvedValue

포시 2023. 7. 17. 19:29
728x90

개요

오랜만에 Jest를 통해 테스트 코드를 작성하던 중 

mockImplementation과 mockResolvedValue의 쓰임새에 대해 헷갈려 정리할 겸 포스팅

 

mockImplementation

const mockResult = new Promise((resolve, reject) => {
  resolve({ message: '참여 성공' });
});

jest.spyOn(meetupsService, 'join').mockImplementation(() => mockResult);

모의 함수를 직접 구현할 때 사용한다. 

 

mockResolvedValue

const mockResult = new Promise((resolve, reject) => {
  resolve({ message: '참여 성공' });
});

jest.spyOn(meetupsService, 'join').mockResolvedValue(mockResult);

반환하는 Promise 해결값을 지정할 때 사용한다. 

 

정리

메서드의 내부 로직과 상관없이 Promise 결과값에 대해서만 모킹을 진행할 경우 mockResolvedValue를 사용하고

함수 전체를 모킹할 경우 mockImplementation을 사용하면 되겠다. 

 

예전에 프로젝트 할 때 무식하게 죄다 mockResolvedValue를 쓰며 결과값만 박았었는데

상황에 따라 함수 자체를 정의해 사용할 수도 있으므로 이번에 확실히 짚고 넘어가는게 좋을듯

 

참고

https://www.daleseo.com/jest-fn-spy-on/

 

[Jest] jest.fn(), jest.spyOn() 함수 모킹

Engineering Blog by Dale Seo

www.daleseo.com

 

728x90

'Test Case' 카테고리의 다른 글

[Jest] 오토 모킹 vs 수동 모킹  (0) 2023.04.02
테스트 코드(Test Code) - supertest  (0) 2023.01.08
테스트 코드(Test Code) - Jest  (0) 2022.12.31
assert문이란?  (0) 2022.11.19
코드 커버리지(Code Coverage)란?  (0) 2022.11.19