Vitest について
Vitest は Vite エコシステム向けに設計されたユニットテストフレームワークで、Jest 互換の API を提供します。モダン JavaScript の機能、スナップショットテスト、TypeScript に対応し、Vite 開発サーバーと統合して高速なフィードバックを実現します。コーディングエージェントと開発チームがテストワークフローの自動化と高速化に使用します。
主な機能
- 01Jest 互換の API でユニットテストを実行する
- 02スナップショットテスト、モック、コードカバレッジ分析に対応
- 03Vite 開発サーバーとシームレスに統合し、フィードバックが高速
活用シーン
- 01モダン JavaScript プロジェクトのコードロジックを検証する
- 02CI/CD パイプラインとコーディングエージェントでテストを自動化する
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
$
インストール後にvitest --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
01
02
詳細
Vitest
Vite を基盤とする次世代のテストフレームワークです。
ドキュメント | はじめに | 例 | Vitest を選ぶ理由
特長
- Vite の設定、トランスフォーマー、リゾルバー、プラグインを利用できます。アプリと同じ設定を使えます!
- Jest スナップショット
- アサーション用の Chai を内蔵し、Jest expect 互換の API を利用できます
- スマートで即時のウォッチモードにより、テストでも HMR のように動作します!
v8またはistanbulによるネイティブコードカバレッジ。- Jest 互換のモック、スタブ、スパイ。
- DOM とブラウザー API のモックに対応する JSDOM および happy-dom
- ブラウザーでコンポーネントテストを実行するためのブラウザーモード
- コンポーネントテスト(Vue、React、Svelte、Lit、Marko)
- Tinybench によるベンチマーク対応
- プロジェクトに対応
- 型レベルのテストに使える expect-type
- ESM を優先し、トップレベルの await に対応
- 標準で TypeScript / JSX に対応
- スイートとテストのフィルタリング、タイムアウト、並行実行
- シャーディングに対応
- 捕捉されないエラーをレポート
- テストをブラウザー内でネイティブに実行
Vitest には Vite >=v6.4.0 および Node >=v22.12.0 が必要です
import { assert, describe, expect, it } from 'vitest'
describe('suite name', () => {
it('foo', () => {
expect(1 + 1).toEqual(2)
expect(true).to.be.true
})
it('bar', () => {
assert.equal(Math.sqrt(4), 2)
})
it('snapshot', () => {
expect({ foo: 'bar' }).toMatchSnapshot()
})
})
$ npx vitest
スポンサー
クレジット
以下の方々に感謝します:
- 快適なテスト API を作成した Jest チームとコミュニティ
- uvu の開発に取り組んだ @lukeed。多くの着想を得ました。
- Vite を使ってサーバーコードを変換、バンドルするというアイデアと実装を手がけた @pi0
- 初期アイデアの検討に協力してくれた Vite チーム
- 素晴らしいパッケージ名を考案した @patak-dev!
貢献
貢献ガイドをご覧ください。
ライセンス
MIT ライセンス © 2021-Present VoidZero Inc. および Vitest 貢献者
コメント
Markdown 対応