🙆♀️
ReactにVitestを追加してテスト環境を整備する方法
どうもこんにちは、たくびーです。
今回はReactプロジェクトにvitestを導入したので備忘録として残したいと思います。
Vitest導入方法
パッケージインストール
まずは必要なパッケージをインストールします。以下のコマンドを実行してください。
npm install -D vitest jsdom @testing-library/jest-dom @testing-library/react @testing-library/user-event
ファイル追加
次に、テストのセットアップ用ファイルを追加します。vitest-setup.ts
というファイルを作成し、以下の内容を追加してください。
vitest-setup.ts
import '@testing-library/jest-dom/vitest';
設定追加
続いて、Viteの設定ファイル(vite.config.ts
)にテスト関連の設定を追加します。
vite.config.ts
/// <reference types="vitest" />
import react from '@vitejs/plugin-react';
import { defineConfig } from 'vite';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react()],
build: {
// ビルド設定
},
server: {
// サーバー設定
},
test: {
globals: true,
environment: 'jsdom',
setupFiles: ['./vitest-setup.ts'],
},
});
さらに、tsconfig.ts
にも設定を追加します。
tsconfig.ts
{
"compilerOptions": {
"allowImportingTsExtensions": true,
"isolatedModules": true,
"jsx": "react-jsx",
"lib": [
"ES2020",
"DOM",
"DOM.Iterable"
],
"module": "ESNext",
"types": [
"vitest/globals",
],
"moduleResolution": "bundler",
"noEmit": true,
"noFallthroughCasesInSwitch": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": true,
"target": "ES2020",
"useDefineForClassFields": true
},
"include": [
"src",
"./vitest-setup.ts",
],
"references": [
{
"path": "./tsconfig.node.json"
}
]
}
(オプション) 日付のテストを行う場合は、以下のパッケージもインストールしてください。
npm install -D jest-date-mock
テストの書き方
以下はテストのサンプルです。sample.tsx
ファイルを作成し、次の内容を追加します。
sample.tsx
import { render, screen } from '@testing-library/react';
import { SomeComponent } from './components/SomeComponent';
describe('このファイルのテストの説明', () => {
test('テストケースについて', () => {
render(<SomeComponent />);
const element = screen.getByText('確認したい文字列');
expect(element).toBeInTheDocument();
});
});
テストの実行
以下のコマンドでテストを実行します。
npm run test
カバレッジの出し方
パッケージのインストール
カバレッジを出すためのパッケージをインストールします。
npm i -D @vitest/coverage-v8
package.jsonにスクリプトを記載
package.json
にカバレッジを出力するためのスクリプトを追加します。
{
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview",
"test": "vitest run",
"coverage": "vitest run --coverage"
}
}
カバレッジの出力
以下のコマンドでカバレッジを出力します。
npm run coverage
実行後、coverage
ディレクトリが作成され、詳細なカバレッジレポートを確認することができます。
Discussion