Skip to content
Vitest 0
Main Navigation ガイドAPI設定高度な
1.6.1
0.34.6

日本語

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
한국어
Italiano
Polski
Türkçe
čeština
magyar

日本語

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
한국어
Italiano
Polski
Türkçe
čeština
magyar

外観

Sidebar Navigation

ガイド

Vitest の必要性

はじめに

特徴

ワークスペース

コマンドラインインターフェース

テストのフィルタリング

カバレッジ

スナップショット

モック

型テスト

Vitest UI

ブラウザモード(実験的)

ソース内テスト

テストコンテキスト

テスト環境

マッチャー拡張

IDE連携機能

デバッグ

他のテストランナーとの比較

移行ガイド

よくあるエラー

API

テスト API リファレンス

モック関数

Vi

expect

expectTypeOf

assertType

設定

Vitest の設定

このページの内容

ワークスペース ​

Vitest は、ワークスペース設定ファイルを通じて、モノレポを組み込みでサポートしています。ワークスペースを作成することで、プロジェクトの設定を定義し、管理することができます。

ワークスペースの定義 ​

ワークスペースは、ルートディレクトリに vitest.workspace または vitest.projects ファイルを持つ必要があります(設定ファイルがある場合は、それと同じディレクトリに配置します)。Vitest は、このファイルに対して ts、js、json の拡張子をサポートしています。

ワークスペース設定ファイルは、プロジェクトを参照するファイルまたは glob パターンのリストをデフォルト export する必要があります。たとえば、packages という名前のプロジェクトを含むフォルダがある場合、次の構成ファイルでワークスペースを定義できます。

ts
export default ['packages/*'];

Vitest は、packages ディレクトリ内の各フォルダを、設定ファイルが存在しなくても個別のプロジェクトとして扱います。

WARNING

Vitest は、ルート設定をワークスペースプロジェクトとして扱いません(したがって、この構成で明示的に指定されていない限り、include で指定されたテストは実行されません)。

設定ファイルを使ってプロジェクトを指定することもできます。

ts
export default ['packages/*/vitest.config.{e2e,unit}.ts'];

このパターンでは、ファイル名の拡張子の前に e2e または unit が含まれる vitest.config ファイルを持つプロジェクトのみが対象となります。

WARNING

glob パターンでファイル名を指定する場合、設定ファイル名が vite.config または vitest.config で始まることを確認してください。そうでない場合、Vitest はそのファイルを無視します。

インライン設定を使ってプロジェクトを定義することもできます。ワークスペースファイルは、両方の構文を同時に使用することをサポートしています。

ts
import { defineWorkspace } from 'vitest/config';

// defineWorkspace は、優れた型ヒントによる開発体験(DX)を提供します
export default defineWorkspace([
  'packages/*',
  {
    // 2つの設定をマージするには "extends" を使用します
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // インライン設定を使用する場合は、名前を定義することを推奨します
      name: 'happy-dom',
      environment: 'happy-dom',
    },
  },
  {
    test: {
      include: ['tests/**/*.{node}.test.{ts,js}'],
      name: 'node',
      environment: 'node',
    },
  },
]);

WARNING

すべてのプロジェクトは一意の名前を持つ必要があります。そうでない場合、Vitest はエラーをスローします。インライン構成内に名前を指定しない場合、Vitest は自動的に番号を割り当てます。glob 構文で定義されたプロジェクト構成内に名前を指定しない場合、Vitest はデフォルトでディレクトリ名を使用します。

インライン構成を使用しない場合は、ルートディレクトリにシンプルな json ファイルを作成するだけで済みます。

json
["packages/*"]

ワークスペースプロジェクトは、すべての構成プロパティをサポートしているわけではありません。型の安全性を確保するため、プロジェクトの設定ファイル内では defineConfig メソッドの代わりに defineProject を使用してください。

ts
import { defineProject } from 'vitest/config';

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" はプロジェクト構成ではサポートされていないため、
    // エラーが表示されます
    reporters: ['json'],
  },
});

構成 ​

構成オプションはルートレベルの構成ファイルからは継承されません。共通の設定ファイルを作成し、それを各プロジェクトの設定とマージすることで、設定を共有できます。

ts
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';

export default mergeConfig(
  configShared,
  defineProject({
    test: {
      environment: 'jsdom',
    },
  })
);

また、構成オプションの一部は、プロジェクト構成では使用できません。主なものは以下の通りです。

  • coverage: カバレッジはワークスペース全体で実行されます
  • reporters: ルートレベルのリポーターのみがサポートされます
  • resolveSnapshotPath: ルートレベルのリゾルバーのみが有効になります
  • その他、テストランナーの動作に影響を与えないすべてのオプション

TIP

プロジェクトの設定内でサポートされていない設定オプションには、"Config" ページに * のアイコンが表示されています。

カバレッジ ​

ワークスペースプロジェクトのカバレッジは、特別な設定なしに利用できます。ただし、all オプションを有効にしており、一部のプロジェクトで非標準の拡張子を使用している場合は、ルートの設定ファイルでその拡張子を処理するためのプラグインが必要になる場合があります。

例えば、Vue ファイルを使用するパッケージがあり、独自の構成ファイルを持っているものの、一部のファイルがテストでインポートされていない場合、未使用ファイルの解析を試みるとカバレッジが失敗することがあります。これは、プロジェクトの設定ではなくルートの設定に基づいて分析が行われるためです。

Pager
前のページ特徴
次のページコマンドラインインターフェース

MITライセンス の下で公開されています。

Copyright (c) 2024 Mithril Contributors

https://v0.vitest.dev/guide/workspace

MITライセンス の下で公開されています。

Copyright (c) 2024 Mithril Contributors