TIL
TIL 240613 - JEST 테스트코드 작성 시 에러 검증 방법
lemonpie611
2024. 6. 13. 20:09
jest를 이용해서 테스트코드 작성중 생긴 문제점
controller 계층에서 에러를 발생시킬때는 mockNext에서 검증을 하면 되는데, service에서는 그렇게 할 수가 없다.
애초에 에러가 발생하면 검증을 중단한다..
그래서 service 계층에서 에러를 인위적으로 발생시키면 다음과 같이 에러메시지가 나타난다.
이럴땐 try/catch 문을 사용하자. try에서 해당 service를 실행시킨 뒤, catch에서 에러를 받아 에러를 검증한다.
//회원가입 실패: 이메일 존재
test('signUp', async () => {
const mockReturn = dummyUsers.create.return;
mockAuthRepository.findUserInfoByEmail.mockReturnValue(mockReturn);
const signUpParams = dummyUsers.create.params;
try {
const userInfo = await authService.signUp(signUpParams.email, signUpParams.password, signUpParams.name);
} catch (err) {
expect(mockAuthRepository.findUserInfoByEmail).toHaveBeenCalledTimes(1);
expect(mockAuthRepository.findUserInfoByEmail).toHaveBeenCalledWith(signUpParams.email);
expect(err).toEqual(new HttpError.Conflict(MESSAGES.AUTH.COMMON.EMAIL.DUPLICATED));
}
});
catch에서 받은 에러가 해당 에러와 일치하는지 검증한다.