Skip to content
Vitest 2
Main Navigation ガイドAPI設定ブラウザモード高度な
2.1.9
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 連携機能

デバッグ

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

マイグレーションガイド

よくあるエラー

Profiling Test Performance

パフォーマンスの改善

このページの内容

マッチャーの拡張 ​

VitestはChaiとJestの両方と互換性があるため、chai.use APIまたはexpect.extendのどちらか、お好みの方法でマッチャーを拡張できます。

このガイドでは、expect.extendを使ったマッチャーの拡張について説明します。ChaiのAPIに興味がある場合は、Chaiのガイドを参照してください。

デフォルトのマッチャーを拡張するには、マッチャーを定義したオブジェクトを引数にexpect.extendを呼び出します。

ts
expect.extend({
  toBeFoo(received, expected) {
    const { isNot } = this;
    return {
      // isNotの値によって`pass`を変更する必要はありません。Vitestが自動的に処理します。
      pass: received === 'foo',
      message: () => `${received} is${isNot ? ' not' : ''} foo`,
    };
  },
});

TypeScriptを使用している場合、環境宣言ファイル(例: vitest.d.ts)で以下のコードを使用して、デフォルトのAssertionインターフェースを拡張できます。

ts
import 'vitest';

interface CustomMatchers<R = unknown> {
  toBeFoo: () => R;
}

declare module 'vitest' {
  interface Assertion<T = any> extends CustomMatchers<T> {}
  interface AsymmetricMatchersContaining extends CustomMatchers {}
}

WARNING

環境宣言ファイルをtsconfig.jsonに含めることを忘れないでください。

マッチャーの戻り値は、以下のインターフェースと互換性がある必要があります。

ts
interface ExpectationResult {
  pass: boolean;
  message: () => string;
  // これらを渡すと、マッチャーの検証が失敗した場合に差分が自動的に表示されるため、
  // 自分で差分を出力する必要はありません。
  actual?: unknown;
  expected?: unknown;
}

WARNING

非同期マッチャーを作成する場合、テスト内で結果をawaitするのを忘れないでください(例: await expect('foo').toBeFoo())。

マッチャー関数の最初の引数は、受け取り値(expect(received)の中の値)です。残りの引数は、マッチャーに直接渡される引数です。

マッチャー関数は、thisコンテキストを通じて以下のプロパティにアクセスできます。

  • isNot

    マッチャーがnotで呼び出された場合(例: expect(received).not.toBeFoo())、trueとなります。

  • promise

    マッチャーがresolvedまたはrejectedで呼び出された場合、この値には修飾子名が格納されます。それ以外の場合は、空の文字列となります。

  • equals

    これは2つの値を比較するためのユーティリティ関数です。値が等しい場合はtrueを返し、それ以外の場合はfalseを返します。この関数は、ほとんどのマッチャーで内部的に利用されています。非対称マッチャーを含むオブジェクトもデフォルトでサポートしています。

  • utils

    これには、メッセージ表示に利用できる一連のユーティリティ関数が含まれています。

thisコンテキストには、現在のテストに関する情報も含まれています。これはexpect.getState()を呼び出すことでも取得可能です。最も便利なプロパティは次のとおりです。

  • currentTestName

    現在のテストのフルネーム(describeブロック名も含む)。

  • testPath

    現在のテストファイルへのパス。

Pager
前のページテスト環境
次のページIDE 連携機能

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

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/extending-matchers

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

Copyright (c) 2024 Mithril Contributors