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에서 받은 에러가 해당 에러와 일치하는지 검증한다.