testingmockingstubbing
Mocking과 Stubbing - 테스트 격리와 제어
조회 0
Mocking과 Stubbing은 테스트를 격리하고 외부 의존성을 제어하는 방법입니다.
이 글에서는 Jest, Sinon 등을 활용한 모킹 패턴을 정리합니다.
1. Mock vs Stub vs Spy
- Mock: 행동을 검증하는 가짜 객체
- Stub: 특정 값을 반환하는 가짜 객체
- Spy: 실제 함수 호출을 추적
2. Jest Mock
// 함수 모킹
const mockFn = jest.fn();
mockFn("arg");
expect(mockFn).toHaveBeenCalledWith("arg");
// 모듈 모킹
jest.mock("./api", () => ({
fetchUser: jest.fn(),
}));
3. Sinon Stub
const sinon = require("sinon");
const api = require("./api");
const stub = sinon.stub(api, "fetchUser");
stub.returns(Promise.resolve({ id: 1, name: "kwkang" }));
4. 실무 패턴
// 시간 모킹
jest.useFakeTimers();
jest.advanceTimersByTime(1000);
// HTTP 요청 모킹
global.fetch = jest.fn(() =>
.({
: .({ : }),
})
);