---
type: snippet
tags: ['vitest', 'jest', 'testing', 'mock']
status: release
ctime: 2025-01-01
mtime: 2025-01-01
---

Vitest/Jest Fake Timers로 시간 제어

```javascript
describe('time-dependent tests', () => {
  beforeEach(() => {
    vi.useFakeTimers() // jest.useFakeTimers('modern')
  })

  afterEach(() => {
    vi.useRealTimers() // jest.useRealTimers()
  })

  it('특정 시간에 동작 확인', () => {
    vi.setSystemTime(new Date(2000, 1, 1, 13)) // 13시 설정
    expect(purchase()).toEqual({ message: 'Success' })
  })

  it('영업시간 외 동작', () => {
    vi.setSystemTime(new Date(2000, 1, 1, 19)) // 19시 설정
    expect(purchase()).toEqual({ message: 'Error' })
  })
})
```

`@sinonjs/fake-timers` 기반. Date, setTimeout 등 모킹.
