목록 보기
react-testing-library 의 fireEvent 를 userEvent로 마이그레이션 하기 with Antd
프론트엔드

react-testing-library 의 fireEvent 를 userEvent로 마이그레이션 하기 with Antd

더핑크퐁컴퍼니
더핑크퐁컴퍼니
2022년 5월 3일

두줄요약

fireEvent 기반 테스트를 userEvent로 전환하며 실제 사용자 상호작용을 반영했습니다. Ant Design 컴포넌트의 포인터 이벤트와 multiple select mocking 이슈를 해결했습니다.

문제 상황

  • 사내 백오피스의 fireEvent 기반 프론트엔드 테스트를 실제 사용자 상호작용에 가까운 userEvent로 전환
  • Ant Design의 Select·DatePicker처럼 네이티브 HTML 요소와 다른 구현에서 발생하는 테스트 제약

해결 방법

  • 입력값 변경은 change 대신 type과 clear로 사용자 입력 흐름 반영
  • blur 검증은 직접 blur 이벤트 호출 대신 입력창 외부 클릭으로 포커스 이탈 재현
  • Ant Design DatePicker의 pointer-events: none 요소는 userEvent.setup의 pointerEventsCheck 설정으로 처리

주의할 점

  • userEvent v14 API의 Promise 반환에 따른 await 기반 비동기 테스트
  • 네이티브 select 전용인 selectOptions 사용을 위한 Ant Design Select mocking
  • multiple select mock에서 첫 선택값인 value 대신 selectedOptions 기반 전체 선택값 반영

적용해볼 점

  • 구현 세부사항보다 화면에 드러나는 사용자 행위 중심의 BDT 테스트 작성
  • UI 라이브러리 mock 작성 전 HTML 기본 동작과 요소 특성 점검

다음 읽기

#React 주제를 다룬 다른 회사 글

UI 라이브러리 개발 [기술 블로그]

디자인 시스템 부재로 생긴 스타일 불일치와 소통 비용을 React UI 라이브러리로 개선했습니다.\nStorybook·자동화 테스트·ESM/CJS 빌드로 검증과 호환성을 강화했습니다.

로플랫
로플랫
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...