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