개인과제의 테스트 코드를 작성하면서 다음과 같은 오류가 발생했다.
TypeError: mockRequest is not a function
27 | beforeEach(() => {
28 | jest.clearAllMocks();
> 29 | req = mockRequest();
| ^
30 | res = mockResponse();
31 | });
32 |
at Object.mockRequest (tests/unit/controllers/users.controller.unit.spec.js:29:9)]
컨트롤러 계층에선 앞단과 직접 통신을 하는데, req 및 req와 관련된 값(예 : req.body)을 테스트 코드에서는 불러오지 못하는 문제였다.
단위 테스트에서 jest를 사용하여 HTTP 요청과 응답을 모의하는 경우, mockRequest와 mockResponse를 사용하기 위해 먼저 이 함수들을 정의하거나 라이브러리에서 제공하는 해당 기능을 가져와야 한다고 한다. jest-mock-express와 같은 라이브러리를 사용하면 된다.
yarn add jest-mock-express
다음과 같이 설치하고 나서 임포트 해주었더니 해결되었다.
import {mockRequest, mockResponse} from 'jest-mock-express';