> [!date] published: 2025-06-01
## `fireEvent`
[Firing Events \| Testing Library](https://testing-library.com/docs/dom-testing-library/api-events/#fireevent)
> [!tip]
> 대부분의 경우에는 [[#userEvent]] 를 사용하는 것이 권장된다.
DOM 이벤트를 쉽게 발생시키기 위한 내장 유틸리티
아래처럼 사용할 수 있다.
```ts
fireEvent.change(input, { target: { value: "2020-05-24" } });
fireEvent.keyDown(domNode, { key: "A", code: "KeyA" });
```
## `fireEvent` vs `user-event`
[Differences from fireEvent](https://testing-library.com/docs/user-event/intro/#differences-from-fireevent)
| | `fireEvent` | `user-event` |
| ----------------- | ------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| **실행 방식** | 동기적 실행 | 비동기적 실행 |
| **이벤트 시퀀스** | 하나의 이벤트만 실행(예: 값 변경 이벤트만) | 사용자 인터렉션과 연결된 이벤트를 순차적으로 실행<br/>(예: click -> focus -> keydown -> change) |
## `user-event`
[User Interactions](https://testing-library.com/docs/user-event/intro/#)
유저 인터랙션을 시뮬레이션하는 라이브러리 (추가로 설치해야 한다.)
```ts
import userEvent from "@testing-library/user-event";
test("trigger some awesome feature when clicking the button", async () => {
const user = userEvent.setup();
render(<MyComponent />);
await user.click(screen.getByRole("button", { name: /click me!/i }));
// ...assertions...
});
```
### `userEvent.setup()`
- [`userEvent.setup()` \| Testing Library](https://testing-library.com/docs/user-event/setup)
## 관련 문서
- [[React Testing Library 쿼리와 우선순위]]