1. Jest 에러 기록

깡통·2024년 2월 6일
0
  • Jest 오류
    테스트 함수와 테스트 케이스에 몇 가지 문제가 있어 보입니다. 여러가지 수정을 통해 이를 해결할 수 있습니다.

    • 테스트 함수에서 router.post를 호출하고 있다. 하지만 이 함수는 실제로 테스트하는 것이 아니라 라우팅 로직 자체를 실행하는 것이다. Jest에서 테스트를 위해서는 요청(request)과 응답(response) 객체를 가짜(mock)로 만들어 사용해야 합니다.

    • expect 함수를 사용하여 테스트를 실행할 때, 테스트 함수가 비동기 작업을 수행하므로 async/await를 사용해야 합니다.

    • expect(emailTest()).toBe(res.render('validation.ejs'));는 테스트의 방식이 잘못되었습니다. Jest에서는 expect 함수에 비교하고자 하는 값만 전달하면 됩니다.

    • emailTest 함수 내부에서 transporter 객체를 사용하는 부분이 주석 처리되어 있습니다. 주석 처리된 코드를 활성화해야 실제로 이메일 전송이 이루어집니다.

다음은 수정된 코드의 예시입니다:

  • jest.fn()은 Jest에서 제공하는 모의 함수(Mock Function)를 생성하는 함수입니다

    • 호출 여부 확인: toBeCalled, toHaveBeenCalledTimes, toHaveBeenCalledWith 등을 사용하여 함수가 호출되었는지, 몇 번 호출되었는지, 어떤 인자와 함께 호출되었는지 등을 확인할 수 있습니다.

    • 반환 값 설정: mockReturnValue, mockReturnValueOnce 등을 사용하여 모의 함수의 반환 값을 설정할 수 있습니다.

    • 구현: mockImplementation, mockImplementationOnce 등을 사용하여 모의 함수의 구현을 제공할 수 있습니다.

  • json에서는 주석 못씀

  • 테스트 코드는 서버 내부 api만으로 실행 > 결과 값 도출 이 가능하도록 설계해야 함. 외부 api를 받아와 테스트하는 것은 매우 바람직하지 않음.

profile
코딩하러 온 사람입니다.

0개의 댓글