テスト
Vue3アプリケーションのテスト戦略には、ロジックテストとUIテストが含まれます。これらのテストを効果的に実行するために、vitest
と@vue/test-utils
を使用します。vitest
はVueアプリケーションのための高速なユニットテストランナーおよびアサーションライブラリであり、@vue/test-utils
はVueコンポーネントのUIテストをより宣言的に行うためのツールセットを提供します。
プロジェクトのセットアップ
- Viteを使用してVue3プロジェクトを作成し、必要なテスト依存関係を追加します。
npm create vite@latest my-vue-app -- --template vue cd my-vue-app npm install npm install -D vitest @vue/test-utils jsdom @vitejs/plugin-vue
vitest
を使用するために、vite.config.js
を編集してテストの設定を追加します。globals: true
とすることでdescribe
,it
,test
,expect
,beforeAll
,afterAll
,beforeEach
,afterEach
,vi
などの関数が自動インポートされ記述量を減らせます。vite.config.jsimport { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import { fileURLToPath, URL } from 'url'; export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, test: { globals: true, environment: 'jsdom', }, });
ロジックのテストの例
Vue3コンポーネントのロジック(例えば、算術演算を行う関数)をテストします。
src/utils/sum.js
// 単純な加算関数
export function sum(a, b) {
return a + b;
}
UIのテストの例
@vue/test-utils
を使用して、ユーザーインターフェイスのテストを行います。コンポーネントに入力を提供し、期待される出力を検証します。
src/components/HelloWorld.vue
<script setup>
defineProps({
msg: String,
});
</script>
<template>
<div>{{ msg }}</div>
</template>
テストの実行
テストを実行するには、package.json
にスクリプトを追加し、vitest
を使ってテストを実行します。
{
"scripts": {
"test": "vitest"
}
}
コマンドラインで以下を実行します。
npm run test
@vitest/ui
とカバレッジツール
必要となるライブラリをインストールします。
npm install -D @vitest/ui @vitest/coverage-v8
coverageの設定を追加します。
vite.config.js
export default defineConfig({
// 中略
test: {
globals: true,
environment: 'jsdom',
// 下記を追加
coverage: {
provider: 'v8',
enabled: true
}
},
});