데브허브 | DEVHUB | Testing, 1 2 3 4, Dominik G. — Svelte Summit Spring 2025Testing, 1 2 3 4, Dominik G. — Svelte Summit Spring 2025
- Dominik G.는 20년 이상의 경험을 바탕으로 테스트의 중요성과 그에 대한 열정을 강조합니다. 🧑💻
- 개발자의 상당수(60%)가 테스트 코드 작성을 즐기지 않아, 업계의 일반적인 과제를 보여줍니다. 📉
- 이 강연은
Vitest와 Vite를 사용하여 Svelte/SvelteKit 애플리케이션의 유닛, 컴포넌트, E2E 테스트 설정을 다룹니다. 🚀
Vitest는 단순성, JavaScript 유닛 테스트를 위한 기본 제로 구성, 빠른 성능으로 높이 평가됩니다. ✨
SV CLI는 sv add vitest 명령 하나로 Svelte/SvelteKit 프로젝트에 Vitest를 쉽게 통합하고 복잡한 설정을 자동으로 처리합니다. 🛠️
Vitest 생태계 CI는 업데이트가 기존 Svelte/SvelteKit 테스트 설정을 손상시키지 않도록 보장하며, 높은 수준의 개발자 지원을 보여줍니다. 🛡️
- SvelteKit의 서버 및 클라이언트 부분은
Vitest 워크스페이스를 사용하여 별도로 테스트되며, 각각 Node(서버) 및 JSDOM(클라이언트) 환경에 맞는 고유한 구성을 가집니다. 🌐
- 클라이언트 측 컴포넌트 테스트는
@testing-library/svelte와 JSDOM을 활용하며, matchMedia와 같은 브라우저 API를 모의(mock)하기 위한 설정 파일을 포함합니다. 🧪
Vitest의 "watch mode"는 코드 또는 테스트 파일 변경 시 관련 테스트만 재실행하는 핫 테스트 리로딩을 제공하여 피드백 루프를 획기적으로 단축합니다. ⚡
- 이 watch mode는 실패하는 테스트를 추가하고, 코드를 수정하면 테스트가 자동으로 통과하는 효율적인 버그 수정 워크플로우를 가능하게 합니다. ✅
- Svelte 5 모듈(룬)은
.svelte.ts (예: doubler.svelte.test.ts) 접미사를 사용하여 테스트 파일 이름을 지정함으로써 반응적으로 테스트할 수 있으며, 테스트 내에서 룬을 직접 사용할 수 있습니다. ⚛️
- SSR 출력 테스트는
.ssr.test.ts 접미사를 가진 테스트 파일과 svelte/server의 render 함수를 사용하여 가능하며, SEO 및 중요한 콘텐츠에 대한 빠른 피드백을 제공합니다. 🔍
- JSDOM의 한계(시각적 피드백 없음, 실제 브라우저와 다름)는
Vitest 브라우저 모드를 통해 해결되며, 실제 브라우저에서 테스트를 실행하여 신뢰성을 높입니다. 🖥️