Skip to content
Vitest 1
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

assert

assertType

設定

Vitestの設定ファイル管理

Vitestの設定

このページの内容

テスト環境 ​

Vitest は、特定の環境でコードを実行するための environment オプションを提供します。environmentOptions オプションを使用すると、環境の動作をカスタマイズできます。

デフォルトでは、次の環境が利用可能です。

  • node: デフォルトの環境です。
  • jsdom: ブラウザ API を提供することでブラウザ環境をエミュレートします。jsdom パッケージを使用します。
  • happy-dom: ブラウザ API を提供することでブラウザ環境をエミュレートします。jsdom よりも高速であるとされていますが、一部の API が実装されていません。happy-dom パッケージを使用します。
  • edge-runtime: Vercel の edge-runtime をエミュレートします。@edge-runtime/vm パッケージを使用します。

特定のファイルに対する環境設定 ​

設定ファイルで environment オプションを設定すると、プロジェクト内のすべてのテストファイルに適用されます。より詳細な制御を行うには、制御コメントを使用して特定のファイルの環境を指定できます。制御コメントは @vitest-environment で始まり、その後に環境名を記述します。

ts
// @vitest-environment jsdom

import { expect, test } from 'vitest';

test('test', () => {
  expect(typeof window).not.toBe('undefined');
});

または、environmentMatchGlobs オプションを設定して、グロブパターンに基づいて環境を割り当てることもできます。

カスタム環境の作成 ​

0.23.0 以降では、独自のパッケージを作成して Vitest 環境を拡張できます。これを行うには、vitest-environment-${name} という名前のパッケージを作成するか、0.34.0 以降でサポートされている有効な JS ファイルのパスを指定します。そのパッケージは Environment 型のオブジェクトをエクスポートする必要があります。

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  // optional - only if you support "experimental-vm" pool
  async setupVM() {
    const vm = await import('node:vm');
    const context = vm.createContext();
    return {
      getVmContext() {
        return context;
      },
      teardown() {
        // called after all tests with this env have been run
      },
    };
  },
  setup() {
    // custom setup
    return {
      teardown() {
        // called after all tests with this env have been run
      },
    };
  },
};

WARNING

0.34.0 以降、Vitest は環境オブジェクトに transformMode オプションを必須とします。これは ssr または web のいずれかでなければなりません。この値は、プラグインがソースコードを変換する方法を決定します。ssr に設定されている場合、プラグインフックはファイルの変換または解決時に ssr: true を受け取ります。それ以外の場合、ssr は false に設定されます。

vitest/environments エントリを介して、デフォルトの Vitest 環境にアクセスすることもできます。

ts
import { builtinEnvironments, populateGlobal } from 'vitest/environments';

console.log(builtinEnvironments); // { jsdom, happy-dom, node, edge-runtime }

Vitest は、オブジェクトのプロパティをグローバル名前空間に移動するために使用できる populateGlobal ユーティリティ関数も提供します。

ts
interface PopulateOptions {
  // should non-class functions be bind to the global namespace
  bindFunctions?: boolean;
}

interface PopulateResult {
  // a list of all keys that were copied, even if value doesn't exist on original object
  keys: Set<string>;
  // a map of original object that might have been overridden with keys
  // you can return these values inside `teardown` function
  originals: Map<string | symbol, any>;
}

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
前のページテストコンテキスト
次のページマッチャー拡張

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

Copyright (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/environment

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

Copyright (c) 2024 Mithril Contributors