-
Notifications
You must be signed in to change notification settings - Fork 6
테스트 전략
KIM DAEUN edited this page Jul 26, 2024
·
3 revisions
프로젝트에 세팅된 테스트 도구들의 목적과 사용 범위를 설명합니다.
-
목적
- 클라이언트가 서버와 독립적으로 테스트 및 개발할 수 있도록 서버 응답을 Mocking합니다.
-
사용
- MSW(Mock Service Worker)를 사용하면 네트워크 요청을 가로채고 미리 정의된 응답을 반환할 수 있습니다. 이를 통해 다양한 응답 시나리오를 시뮬레이션할 수 있습니다.
-
사용 범위(대상)
MSW를 사용해 다음의 시나리오를 발생시킵니다:
- URL이 잘못되었거나 쿼리 파라미터가 잘못 전달된 경우 에러를 반환합니다.
- 모든 것이 정상적인 경우 mock 데이터와 200대 응답을 반환합니다.
-
목적
- 애플리케이션의 개별 컴포넌트를 독립적으로 검증합니다.
-
사용
- 각 컴포넌트를 서로 격리된 환경에서 테스트합니다.
- 컴포넌트의 다양한 상태와 prop을 확인합니다.
- MSW를 함께 사용해 서버와의 상호작용이 필요한 컴포넌트들도 테스트합니다.
- Chromatic으로 배포하여 백엔드 크루들도 컴포넌트를 쉽고 효율적으로 한눈에 볼 수 있도록 합니다. 동시에 프론트엔드의 진행 상황을 공유합니다.
-
사용 범위(대상)
페이지 컴포넌트와 레이아웃 컴포넌트는 스토리를 생성하지 않습니다.
Story를 생성하여 테스트하는 컴포넌트는 다음과 같습니다:
- 다양한 곳에서 재사용되는 공통 컴포넌트(e.g. Button, InputField)
- 특정 기능이나 로직을 수행하는 기능 컴포넌트(e.g. ProcessAddForm)
-
목적
- 리액트 훅의 로직을 검증합니다.
-
사용
- 실제 사용자가 애플리케이션을 사용하는 방식과 근접한 방식으로 테스트를 작성할 수 있게 합니다.
- 복잡한 훅 로직을 검증하고, MSW와 함께 사용해 비동기 로직도 테스트합니다.
-
사용 범위(대상)
현재는 프로젝트에 간단한 API 호출 훅만 존재해 RTL을 사용하고 있지 않습니다.
추후 복잡한 도메인 로직을 검증해야 할 때 RTL 테스트를 작성할 예정입니다.
MSW 모킹과 Storybook을 이용해 공통 컴포넌트와 기능 컴포넌트를 테스트하고 있으며, 현시점에 RTL을 사용하는 테스트는 없지만 추후 복잡한 도메인 로직이 생긴 경우 RTL 테스트를 작성할 예정입니다. 세 라이브러리와 관련한 세팅은 모두 완료했습니다.
git flow 브랜치 전략에서 develop 브랜치에 PR이 머지될 때 마다 훅 테스트와 Storybook 배포가 실행되도록 깃허브 액션을 설정해 두었습니다. 테스트 중 하나라도 통과되지 않으면 develop에 머지되지 않습니다.