Skip to content
Vitest 3
Main Navigation ガイド & API設定ブラウザモード高度なAPI
3.2.0
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

API

Node API

上級者向けAPI

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

プラグイン API

Runner API

レポーター

タスクのメタデータ

ガイド

テストの実行

レポーターの拡張

カスタムプール

Vitest の設定

テストAPIリファレンス

このページの内容

タスクのメタデータ ​

WARNING

Vitest は実験的なプライベート API を公開しています。破壊的変更が SemVer に準拠しない可能性があるため、使用する際は Vitest のバージョンを固定してください。

カスタムレポーターを開発している場合、または Vitest Node.js API を使用している場合、様々なコンテキストで実行されているテストからレポーターやカスタム Vitest ハンドラーにデータを渡すことが役立つでしょう。

これを実現するために、テストコンテキストはシリアライズできないため、それに依存することはできません。しかし、Vitest では、すべてのタスク(スイートまたはテスト)で利用可能な meta プロパティを利用して、テストと Node.js プロセス間でデータを共有できます。この通信は一方向のみであることに注意してください。meta プロパティはテストコンテキスト内からのみ変更可能です。Node.js コンテキスト内で行われた変更は、テスト側からは見えません。

meta プロパティは、テストコンテキストで、またはスイートタスクの beforeAll/afterAll フック内で設定できます。

ts
afterAll(suite => {
  suite.meta.done = true;
});

test('custom', ({ task }) => {
  task.meta.custom = 'some-custom-handler';
});

テストが完了すると、Vitest は結果と meta を含むタスクを RPC を使用して Node.js プロセスに送信し、onTestCaseResult およびタスクにアクセスできる他のフックでそのタスクを報告します。このテストケースを処理するには、レポーターの実装で利用可能な onTestCaseResult メソッドを使用できます。

ts
import type { Reporter, TestCase, TestModule } from 'vitest/node';

export default {
  onTestCaseResult(testCase: TestCase) {
    // custom === 'some-custom-handler' ✅
    const { custom } = testCase.meta();
  },
  onTestRunEnd(testModule: TestModule) {
    testModule.meta().done === true;
    testModule.children.at(0).meta().custom === 'some-custom-handler';
  },
} satisfies Reporter;

注意

Vitest は Node.js プロセスとの通信に異なる方法を使用します。

  • Vitest がワーカー スレッドでテストを実行する場合、データは メッセージポート を介して送信されます。
  • Vitest が子プロセスを使用する場合、データは process.send API を介してシリアライズされた Buffer として送信されます。
  • Vitest がブラウザでテストを実行する場合、データは flatted パッケージを使用して文字列に変換されます。

このプロパティは json レポーターではすべてのテストにも存在するため、データが JSON にシリアライズ可能であることを確認してください。

また、Error プロパティ を設定する前にシリアライズしてください。

テストの実行終了後、Vitest の状態からこの情報を取得することもできます。

ts
const vitest = await createVitest('test');
const { testModules } = await vitest.start();

const testModule = testModules[0];
testModule.meta().done === true;
testModule.children.at(0).meta().custom === 'some-custom-handler';

TypeScript を使用している場合、型定義を拡張することも可能です。

ts
declare module 'vitest' {
  interface TaskMeta {
    done?: boolean;
    custom?: string;
  }
}
Pager
前のページレポーター
次のページテストの実行

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

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/metadata

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

Copyright (c) 2021-Present Vitest Team