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 の設定

このページの内容

移行ガイド ​

Jest からの移行 ​

Vitest は、Jest からの移行を可能な限り容易にするため、Jest 互換の API で設計されています。しかし、移行の際に以下の相違点に遭遇する可能性があります。

デフォルトでのグローバル変数 ​

Jest では、グローバル API がデフォルトで有効になっています。Vitest はそうではありません。globals 設定 を使用してグローバル変数を有効にするか、vitest モジュールからインポートするようにコードを更新してください。

グローバル変数を無効にしたままにする場合は、testing-library などの一般的なライブラリが、自動 DOM クリーンアップ を実行しないことに注意してください。

モジュールをモックする ​

Jest でモジュールをモックする場合、ファクトリ関数の引数の戻り値はデフォルトのエクスポートとして扱われます。Vitest では、ファクトリ関数の引数は、各エクスポートが明示的に定義されたオブジェクトを返す必要があります。例えば、次の jest.mock は、次のように更新する必要があります。

diff
- jest.mock('./some-path', () => 'hello')
+ vi.mock('./some-path', () => ({
+   default: 'hello',
+ })

詳細については、vi.mock API セクション を参照してください。

自動モックの挙動 ​

Jest とは異なり、<root>/__mocks__ 内のモック化されたモジュールは、vi.mock() が呼び出されるまでロードされません。Jest のように、すべてのテストでモックする必要がある場合は、setupFiles 内でモックを設定できます。

モック化されたパッケージのオリジナルをインポートする ​

パッケージを部分的にモックする場合、以前は Jest の関数 requireActual を使用していたかもしれません。Vitest では、これらの呼び出しを vi.importActual に置き換える必要があります。

diff
- const { cloneDeep } = jest.requireActual('lodash/cloneDeep')
+ const { cloneDeep } = await vi.importActual('lodash/cloneDeep')

環境変数 ​

Jest と同様に、Vitest は、設定されていない場合、NODE_ENV を test に設定します。Vitest には、JEST_WORKER_ID に対応する VITEST_POOL_ID もあります(常に maxThreads 以下)。これを使用している場合は、名前を変更してください。Vitest は、実行中のワーカーのユニーク ID である VITEST_WORKER_ID も公開します。この数値は maxThreads の影響を受けず、作成されたワーカーごとに増加します。

環境変数を変更する場合、Jest で replaceProperty API を使用していた場合、Vitest では vi.stubEnv を使用して同様の操作が可能です。

Done コールバック関数 ​

Vitest v0.10.0 以降、テストを宣言する際のコールバック形式は非推奨となりました。async/await 関数を使用するように書き換えるか、Promise を使用してコールバック スタイルを模倣できます。

diff
- it('should work', (done) => {
+ it('should work', () => new Promise(done => {
    // ...
    done()
- })
+ }))

フック関数 ​

beforeAll/beforeEach フック関数は、Vitest で teardown 関数 を返す場合があります。そのため、undefined または null 以外の値を返す場合は、フックの宣言を変更する必要があるかもしれません。

diff
- beforeEach(() => setActivePinia(createTestingPinia()))
+ beforeEach(() => { setActivePinia(createTestingPinia()) })

型 ​

Vitest の Vi 名前空間では、多くの型が公開されていません。これは主にマッチャーとの互換性のためのものであり、Vi 名前空間に依存するのではなく、vitest から直接型をインポートする必要がある場合があります。

diff
- let fn: jest.Mock<string, [string]>
+ import type { Mock } from 'vitest'
+ let fn: Mock<[string], string>

また、差分で示されているように、Vitest では Returns ではなく、最初の引数として Args 型を使用します。

タイマー ​

Vitest は、Jest のレガシータイマーをサポートしていません。

Vue のスナップショットテスト ​

これは Jest 特有の機能ではありませんが、以前に vue-cli プリセットで Jest を使用していた場合は、jest-serializer-vue パッケージをインストールし、setupFiles 内で使用する必要があります。

vite.config.js

js
import { defineConfig } from 'vite';

export default defineConfig({
  test: {
    setupFiles: ['./tests/unit/setup.js'],
  },
});

tests/unit/setup.js

js
import vueSnapshotSerializer from 'jest-serializer-vue';

expect.addSnapshotSerializer(vueSnapshotSerializer);

そうしないと、スナップショット内の " が多数エスケープされて表示されます。

Pager
前のページ他のテストランナーとの比較
次のページよくあるエラー

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

Copyright (c) 2024 Mithril Contributors

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

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

Copyright (c) 2024 Mithril Contributors