3. MSW

  • Service worker

  • MSW(Mock Service Worker)

  • polyfill(ํด๋ฆฌํ•„)

๊ฐ•์˜ ์ •๋ฆฌ

MSW (Mock Service Worker)

service worker๋Š” ์›๋ž˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ์›๋ž˜๋Š” ์˜คํ”„๋ผ์ธ ์ž‘์—…์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ž‘์„ฑํ–ˆ๋˜ ๊ฒƒ์€ ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ๋ชจํ‚นํ•˜๊ณ  ํ–ˆ์ง€๋งŒ, MSW๋Š” ๋„คํŠธ์›Œํฌ ๋ ˆ๋ฒจ์—์„œ ํ”„๋ก์‹œ๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ€์งœ๋กœ ํ•ด์ฃผ๋Š” ๊ฒƒ.

setupTests.ts ํŒŒ์ผ ์ž‘์„ฑ

module.exports = {
  testEnvironment: 'jsdom',
  setupFilesAfterEnv: [
    '@testing-library/jest-dom/extend-expect',
    '<rootDir>/src/setupTests.ts',
  ],
  transform: {
    '^.+\\.(t|j)sx?$': [
      '@swc/jest',
      {
        jsc: {
          parser: {
            syntax: 'typescript',
            jsx: true,
            decorators: true,
          },
          transform: {
            react: {
              runtime: 'automatic',
            },
          },
        },
      },
    ],
  },
};

src/setupTests.ts ํŒŒ์ผ ์ž‘์„ฑ

import server from './mocks/server';

beforeAll(() => server.listen({ onUnhandledRequest: 'error' }));

afterAll(() => server.close());

afterEach(() => server.resetHandlers());

src/mocks/server.ts ํŒŒ์ผ ์ž‘์„ฑ

import { setupServer } from 'msw/node';

import handlers from './handlers';

const server = setupServer(...handlers);

export default server;

src/mocks/handlers.ts ํŒŒ์ผ ์ž‘์„ฑ

import { rest } from 'msw';

const BASE_URL = 'http://localhost:3000';

const handlers = [
  rest.get(`${BASE_URL}/products`, (req, res, ctx) => {
    const products = [
      {
        category: 'Fruits',
        price: '$1',
        stocked: true,
        name: 'Apple',
      },
    ];

    return res(ctx.status(200), ctx.json({ products }));
  }),
];

export default handlers;

App.test.ts ํŒŒ์ผ ์ˆ˜์ •

import { render, screen, waitFor } from '@testing-library/react';

import App from './App';

// jest.mock ๋ถˆํ•„์š”.

test('App', async () => {
  render(<App />);

  await waitFor(() => {
    screen.getByText('Apple');
  });
});

๋„ˆ๋ฌด ๋””ํ…Œ์ผํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•˜๋ฉด ์‚ฌ์‹ค์ƒ ๋ฐฑ์—”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค. ์ ๋‹นํ•œ ์„ ์„ ์ง€์ผœ์„œ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.

Last updated