Express

[Jest] Typescript + Express + Jest로 Controller 테스트하기 - Mock, Sequelize

폭풍저그김탁구 2023. 5. 22. 17:31

2023.05.22 - [분류 전체보기] - [Jest] Typescript + Express + Jest로 Service 테스트하기 - Mock, Sequelize

 

[Jest] Typescript + Express + Jest로 Service 테스트하기 - Mock, Sequelize

Express로 새로운 서비스를 작업하던 중, test를 작성해보기로 했다. routes, controllers, services, models 로 나눠진 계층 구조에서 service만 먼저 테스트하려 한다. 환경 설정 모듈 설치 npm install -D jest @types/

kongjino.tistory.com

(이전 글에서 이어지는 글입니다)

 

이번엔 controller에 대한 테스트를 작성해보겠다.

 

 

 


 

 

크게 달라지는 점은 없지만, request와 response를 넣어주는 방식에서 살짝 차이가 있다.

import { jest } from "@jest/globals";
import { mocked } from "jest-mock";
var httpMocks = require("node-mocks-http");

import { Controller } from "../../src/controllers";
jest.mock("../../src/controllers");
const mockController = mocked(Controller);
var req = httpMocks.createRequest();
var res = httpMocks.createResponse();

describe("< Controller >", () => {
  var reqBody = {
    Controller: ""
  };
  var resBody = {
    Controller: expect["number"]
  };

  req.body = reqBody;

  test("Controller, success 응답", async () => {
    mockController.get.mockResolvedValue(resBody);
    var data = await mockController.get(req, res);
    expect(data).toBe(resBody);
  });
});

 http mocks 모듈을 사용하면 쉽게 request와 response 객체를 생성할 수 있다.

객체 생성 후, body 변수를 따로 만들어 사용하면 끝이다!

 

 

 


 

 

참고

https://www.npmjs.com/package/node-mocks-http

 

node-mocks-http

Mock 'http' objects for testing Express routing functions. Latest version: 1.12.2, last published: 2 months ago. Start using node-mocks-http in your project by running `npm i node-mocks-http`. There are 141 other projects in the npm registry using node-moc

www.npmjs.com