Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 8091

Node.jsでプログラムからVitestを実行したい - 動かざることバグの如し

$
0
0

やりたいこと

通常vitestのテストはコマンドラインから実行するが、通常のTypeScriptコードから Vitestのテストコードをロードして実行したい。で、テスト結果を取得したい。

コード

vitestの内部APIを使うとできる。

import{ readFile }from'node:fs/promises';
import{ startVitest }from'vitest/node';

exportasyncfunctionrunVitest(testPath:string): Promise<string> {const jsonPath = 'test-results.json';
  const vitest = await startVitest('test', [testPath], {watch: false,
    run: true, // 単一実行モードを有効化reporters: ['json'], // JSONレポーターを使用outputFile: jsonPath
  });
  if (!vitest) {thrownewError('vitestの初期化に失敗しました');
  }await vitest.close();
  const json = await readFile(jsonPath, 'utf-8');
  // console.log(json);return json;
}

runVitest('src/script/hoge.test.ts');

解説

  • startVitest()を使うことで、Vitestのテストランナーをプログラムから起動できる。
    • 第一引数にはテスト対象のファイルを指定。testを渡すとtestディレクトリ以下の.test.tsファイルを探索する。
    • 第二引数にはテスト対象のファイルを配列で指定。{ watch: false, run: true }で単一実行モード。reporters: ['json'], outputFile: jsonPathJSON形式の結果を指定ファイルに出力。
  • vitest.close()でテストランナーを終了。非同期で実行されるテストが完了するまで待つのを保証する。
  • readFileJSONファイルを読み込み、文字列として返す。test-results.jsonoutputFileで指定したファイル名。
  • runVitest関数を呼び出すことで、指定したテストファイルを実行し、JSON形式の結果を取得できる。

参考リンク


Viewing all articles
Browse latest Browse all 8091

Trending Articles