Vitestを選ぶ理由
注意
このガイドは、Viteに精通していることを前提としています。学習を始めるには、Why Vite Guideと、次世代フロントエンドツール ViteJS(Evan Youによる主要な概念を説明するデモを含むストリーム)を読むことをお勧めします。
Viteネイティブテストランナーの必要性
Viteは、一般的なWebパターン、globインポートやSSRプリミティブなどの機能、そして多くのプラグインと統合に対するすぐに使えるサポートを提供しており、活気のあるエコシステムを育んでいます。その開発とビルドのストーリーは、その成功の鍵です。ドキュメントに関しては、Viteを基盤としたいくつかのSSGベースの代替手段があります。しかし、Viteの単体テストのストーリーは明確ではありませんでした。Jestのような既存のオプションは、異なるコンテキストで作成されました。JestとViteの間には多くの重複があり、ユーザーは2つの異なるパイプラインを設定する必要があります。
テスト中にVite開発サーバーを使用してファイルをトランスフォームすることで、ソースファイルの変換の複雑さを処理する必要のないシンプルなランナーを作成でき、テスト中の最高の開発者エクスペリエンス(DX)の提供に専念できます。アプリと同じ設定(`vite.config.js`を通じて)を使用し、開発時、ビルド時、テスト時に共通の変換パイプラインを共有するテストランナー。Viteと同じプラグインAPIで拡張可能で、あなたとツールのメンテナンス担当者は、Viteとのファーストクラスの統合を提供できます。最初からViteを念頭に置いて構築されたツールであり、インスタントホットモジュールリロード(HMR)など、そのDXの改善を活用しています。これがVitest、Viteによって強化された次世代テストフレームワークです。
Jestの広範な採用を考慮して、Vitestは互換性のあるAPIを提供しており、ほとんどのプロジェクトでドロップイン置換として使用できます。また、単体テストの設定に必要な最も一般的な機能(モック、スナップショット、カバレッジ)も含まれています。Vitestはパフォーマンスを重視しており、ワーカースレッドを使用して可能な限り並列で実行します。一部のポートでは、テストの実行速度が桁違いに速くなっています。ウォッチモードはデフォルトで有効になっており、Viteが開発重視のエクスペリエンスを推進する方法と一致します。これらのDXの改善にもかかわらず、Vitestは依存関係を慎重に選択(または必要な部分を直接インライン化)することで軽量性を維持しています。
Vitestは、Viteプロジェクトのテストランナーとして、そしてViteを使用していないプロジェクトにとっても堅牢な代替手段として位置付けられることを目指しています。
はじめにガイドで読み進めてください
VitestとXの違い
Vitestが他の同様のツールとどのように異なるかについては、比較セクションをご覧ください。