Vue 프로젝트의 Vitest 설정
vitest.config.ts, jsdom 환경, @vue/test-utils, v8을 사용한 커버리지와 test 스크립트를 설정합니다.
Vue 프로젝트의 Vitest 설정은(는) CoddyKit의 무료 Vue Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Vue Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Vue Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
Vue에 Vitest를 사용하는 이유
Vitest는 Vite를 기반으로 만든 빠른 테스트 실행기입니다. Vue 3 프로젝트는 이미 Vite를 사용하므로 Vitest는 동일한 구성과 변환 기능을 재사용합니다. 따라서 테스트를 위한 별도의 빌드 파이프라인이 필요하지 않습니다.
Jest와 유사한 API를 제공하며 ESM과 TypeScript를 기본적으로 지원합니다.
도구 설치하기
Vitest, Vue 테스트 유틸리티, 그리고 jsdom(Node에서 브라우저와 유사한 DOM을 제공하는 환경)을 추가하세요.
// terminal
// npm install -D vitest @vue/test-utils jsdom @vitest/coverage-v8jsdom 환경
컴포넌트를 마운트하려면 DOM이 필요합니다. Node에는 DOM이 없으므로 테스트는 브라우저 API를 시뮬레이션하는 jsdom에서 실행됩니다. 구성에서 이를 테스트 환경으로 설정하세요.
// vitest.config.ts
import { defineConfig } from "vitest/config"
import vue from "@vitejs/plugin-vue"
export default defineConfig({
plugins: [vue()],
test: {
environment: "jsdom",
},
})전역 기능 활성화하기
기본적으로 모든 파일에서 describe, it, expect를 가져와야 합니다. globals: true로 설정하면 Jest처럼 가져오기 없이 어디서나 사용할 수 있습니다.
// vitest.config.ts
export default defineConfig({
test: {
environment: "jsdom",
globals: true,
},
})전역 기능용 TypeScript 유형
TypeScript에서 전역 기능을 사용할 때는 편집기가 describe와 관련 도우미를 인식할 수 있도록 Vitest 유형을 추가하세요.
// tsconfig.json
{
"compilerOptions": {
"types": ["vitest/globals"]
}
}첫 테스트 파일
Vitest는 .test.ts 또는 .spec.ts로 끝나는 파일을 찾습니다. 전역 기능을 켜면 바로 테스트를 작성할 수 있습니다.
// math.test.ts
describe("add", () => {
it("sums two numbers", () => {
expect(1 + 2).toBe(3)
})
})컴포넌트 마운트하기
@vue/test-utils를 설치하고 jsdom을 구성하면 테스트에서 실제 컴포넌트를 마운트하고 렌더링된 출력 결과를 검증할 수 있습니다.
import { mount } from "@vue/test-utils"
import Hello from "./Hello.vue"
it("renders the greeting", () => {
const wrapper = mount(Hello, { props: { name: "Ada" } })
expect(wrapper.text()).toContain("Hello, Ada")
})커버리지 추가하기
커버리지는 테스트가 실행한 줄을 보여 줍니다. Vitest는 v8 제공자(빠르고 기본적으로 지원됨)를 지원합니다. test.coverage 아래에서 구성하세요.
// vitest.config.ts
export default defineConfig({
test: {
coverage: {
provider: "v8",
reporter: ["text", "html"],
},
},
})HTML 커버리지 보고서
html 보고서 생성기는 탐색 가능한 보고서(기본값은 coverage/index.html)를 작성합니다. 보고서를 열면 파일별 줄 커버리지와 분기 커버리지를 확인하고 누락된 부분을 강조 표시할 수 있습니다.
// after running coverage:
// open coverage/index.html in a browser
// red lines = not executed by any testpackage.json 스크립트
편리한 스크립트를 연결하세요. test는 테스트 모음을 실행하고, coverage는 커버리지 플래그와 함께 실행합니다.
// package.json
{
"scripts": {
"test": "vitest",
"test:run": "vitest run",
"coverage": "vitest run --coverage"
}
}감시 모드와 실행 모드
일반적인 vitest는 감시 모드로 계속 실행되며 저장할 때마다 영향을 받은 테스트를 다시 실행합니다. 개발 중에 유용한 방식입니다. CI에서는 한 번만 실행하고 종료해야 하므로 vitest run을 사용하세요.
// local dev: npm run test (watch)
// CI pipeline: npm run test:run (one pass, exits)빠른 확인
Vitest 설정을 어떻게 구성하는지 이해했는지 확인해 보세요.
복습
Vue 프로젝트에 Vitest를 구성했습니다.
vitest,@vue/test-utils,jsdom, 커버리지 제공자를 설치합니다.- 컴포넌트에 DOM이 제공되도록
environment: "jsdom"을 설정합니다. globals: true를 사용하면 테스트 도우미를 가져오지 않아도 됩니다. tsconfig의 유형에vitest/globals를 추가하세요.v8제공자와html보고서 생성기로 커버리지를 구성합니다.test와coverage스크립트를 추가하고, CI에서는vitest run을 사용합니다.
자주 묻는 질문
“Vue 프로젝트의 Vitest 설정” 강의는 무료인가요?
네 — “Vue 프로젝트의 Vitest 설정” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Vue Academy 강의 전체를 잠금 해제할 수 있습니다. Vue Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Vue 프로젝트의 Vitest 설정”에서 뭘 배우나요?
vitest.config.ts, jsdom 환경, @vue/test-utils, v8을 사용한 커버리지와 test 스크립트를 설정합니다. 브라우저에서 직접 실행하는 실습 코드로 Vue Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Vue Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Vue Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Vue 프로젝트의 Vitest 설정” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Vue Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Vue Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Vue 프로젝트의 Vitest 설정
- 컴포넌트 마운트와 검색
- 사용자 상호작용과 이벤트 테스트
- 컴포저블, 스토어와 API 모킹