---
type: snippet
tags: [jest, testing, setup]
status: release
ctime: 2025-12-26
mtime: 2025-12-26
---

Jest setupFiles vs setupFilesAfterEnv - 실행 시점이 다르다.

- **setupFiles**: 테스트 프레임워크 설치 **전**. Jest 전역 객체 없음. 환경 변수, 폴리필용.
- **setupFilesAfterEnv**: 테스트 프레임워크 설치 **후**. `jest.setTimeout()`, 커스텀 matcher, 전역 `beforeEach`용.

`process.env`는 setupFiles에서. 모듈이 import 시점에 환경 변수를 읽기 때문에 setupFilesAfterEnv에서 설정하면 이미 늦다.

```js
// jest.config.js
{ setupFiles: ['./jest.env.js'], setupFilesAfterEnv: ['./jest.setup.js'] }

// jest.env.js - 환경 변수
process.env.API_URL = 'http://test-api.example.com'

// jest.setup.js - Jest API 활용
import '@testing-library/jest-dom'
beforeEach(() => { jest.clearAllMocks() })
```
