Vitest를 선택하는 이유
참고
이 가이드는 Vite에 대한 기본적인 이해가 있다고 가정합니다. 더 자세히 알고 싶다면 Vite를 사용하는 이유 가이드와 ViteJS를 이용한 차세대 프론트엔드 툴링 영상을 참고하세요. 이 영상에서는 Evan You님이 데모를 통해 주요 개념을 설명합니다.
Vite 네이티브 테스트 러너가 필요한 이유
Vite는 일반적인 웹 패턴, glob 가져오기, SSR 프리미티브와 같은 기능을 기본적으로 지원하며, 수많은 플러그인 및 통합을 통해 활발한 생태계를 구축하고 있습니다. 개발 및 빌드 과정은 Vite 성공의 핵심 요소입니다. 문서화 측면에서도 Vite 기반의 다양한 SSG 솔루션이 존재합니다. 하지만 Vite 환경에서의 유닛 테스트는 명확하게 정의되지 않았고, Jest와 같은 기존 도구들은 다른 환경을 기반으로 만들어졌습니다. Jest와 Vite 간에는 기능 중복이 많아 사용자는 서로 다른 두 개의 파이프라인을 구성해야 하는 번거로움이 있었습니다.
테스트 실행 시 Vite 개발 서버를 활용하여 파일을 변환하면 소스 파일 변환의 복잡성을 직접 처리할 필요 없이, 테스트 과정에서 최상의 개발자 경험(DX)을 제공하는 데 집중할 수 있는 간단한 테스트 러너를 만들 수 있습니다. 즉, 앱과 동일한 구성(vite.config.js
를 통해)을 사용하여 개발, 빌드, 테스트 시 공통의 변환 파이프라인을 공유하는 테스트 러너입니다. 또한 사용자와 도구 유지 관리자는 동일한 플러그인 API를 통해 Vite와의 완벽한 통합을 제공할 수 있습니다. Vitest는 처음부터 Vite를 염두에 두고 구축되었기 때문에 즉각적인 핫 모듈 재로드(HMR)와 같은 DX 개선 사항을 활용할 수 있습니다. 이것이 바로 Vite 기반의 매우 빠른 유닛 테스트 프레임워크인 Vitest입니다.
Jest가 널리 사용되고 있다는 점을 고려하여, Vitest는 대부분의 프로젝트에서 대체하여 사용할 수 있는 호환 가능한 API를 제공합니다. 또한 유닛 테스트 설정에 필요한 가장 일반적인 기능(모의, 스냅샷, 커버리지)을 포함하고 있습니다. Vitest는 성능에 많은 관심을 기울이며, 가능한 한 많은 부분을 병렬로 실행하기 위해 워커 스레드를 사용합니다. 이를 통해 일부 환경에서는 테스트 실행 속도가 훨씬 빨라졌습니다. Watch 모드는 기본적으로 활성화되어 있으며, 이는 개발자 우선 경험을 추구하는 Vite의 철학과 일치합니다. 이러한 모든 DX 개선에도 불구하고 Vitest는 의존성을 신중하게 선택하거나 필요한 부분을 직접 포함하여 경량성을 유지합니다.
Vitest는 Vite 프로젝트를 위한 최적의 테스트 러너를 지향하며, Vite를 사용하지 않는 프로젝트에서도 강력한 대안으로 자리매김하는 것을 목표로 합니다.
시작하기 가이드에서 자세한 내용을 확인하세요.
Vitest는 X와 어떻게 다른가?
Vitest가 다른 유사한 도구와 어떤 차이점이 있는지 자세히 알아보려면 비교 섹션을 참조하세요.