上級者向けAPI
WARNING
このガイドでは、Node.jsスクリプトからテストを実行するための上級者向けAPIを解説します。単にテストを実行したいだけであれば、これらのAPIは通常必要ありません。これらは主にライブラリの作者が利用することを想定しています。
vitest/nodeエントリーポイントから、以下の任意のメソッドをインポートして使用できます。
startVitest
function startVitest(
mode: VitestRunMode,
cliFilters: string[] = [],
options: CliOptions = {},
viteOverrides?: ViteUserConfig,
vitestOptions?: VitestOptions
): Promise<Vitest>;VitestのNode APIを使用して、Vitestテストの実行を開始できます。
import { startVitest } from 'vitest/node';
const vitest = await startVitest('test');
await vitest.close();startVitest関数は、テストの開始に成功した場合、Vitestインスタンスを返します。
ウォッチモードが有効になっていない場合、Vitestは自動的にcloseメソッドを呼び出します。
ウォッチモードが有効で、ターミナルがTTYをサポートしている場合、Vitestはコンソールショートカットを設定します。
2番目の引数としてフィルターのリストを渡すことができます。Vitestは、ファイルパスに渡された文字列のいずれかを含むテストのみを実行します。
さらに、3番目の引数を使用してCLI引数を渡すことができ、これにより任意のテスト設定オプションを上書きできます。あるいは、4番目の引数として完全なVite設定を渡すこともでき、これは他のユーザー定義オプションよりも優先されます。
テストを実行した後、state.getTestModules APIから結果を取得できます。
import type { TestModule } from 'vitest/node';
const vitest = await startVitest('test');
console.log(vitest.state.getTestModules()); // [TestModule]TIP
「テストの実行」ガイド("Running Tests")に利用例があります。
createVitest
function createVitest(
mode: VitestRunMode,
options: CliOptions,
viteOverrides: ViteUserConfig = {},
vitestOptions: VitestOptions = {}
): Promise<Vitest>;createVitest関数を使用してVitestインスタンスを作成できます。これはstartVitestと同じVitestインスタンスを返しますが、テストは開始せず、インストール済みパッケージの検証も行いません。
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});TIP
「テストの実行」ガイド("Running Tests")に利用例があります。
resolveConfig
function resolveConfig(
options: UserConfig = {},
viteOverrides: ViteUserConfig = {}
): Promise<{
vitestConfig: ResolvedConfig;
viteConfig: ResolvedViteConfig;
}>;このメソッドは、指定されたカスタムパラメータを使用して設定を解決します。パラメータが指定されていない場合、rootにはprocess.cwd()が使用されます。
import { resolveConfig } from 'vitest/node';
// vitestConfigには解決済みの"test"プロパティのみが含まれます
const { vitestConfig, viteConfig } = await resolveConfig({
mode: 'custom',
configFile: false,
resolve: {
conditions: ['custom'],
},
test: {
setupFiles: ['/my-setup-file.js'],
pool: 'threads',
},
});INFO
ViteのcreateServerの動作原理により、VitestはプラグインのconfigResolveフック内で設定を解決する必要があります。したがって、このメソッドは実際には内部では使用されず、公開APIとしてのみ提供されています。
startVitestまたはcreateVitest APIに設定を渡した場合でも、Vitestは再度設定を解決します。
WARNING
resolveConfigはprojectsを解決しません。プロジェクトの設定を解決するには、Vitestは構築済みのViteサーバーが必要です。
さらに、viteConfig.testは完全には解決されない点に注意してください。Vitestの設定が必要な場合は、代わりにvitestConfigを使用してください。
parseCLI
function parseCLI(
argv: string | string[],
config: CliParseOptions = {}
): {
filter: string[];
options: CliOptions;
};このメソッドを使用してCLI引数を解析できます。これは、文字列(引数が単一のスペースで区切られたもの)またはVitest CLIが使用するのと同じ形式のCLI引数の文字列配列を受け入れます。このメソッドは、後でcreateVitestまたはstartVitestメソッドに渡すためのフィルターとoptionsを返します。
import { parseCLI } from 'vitest/node';
const result = parseCLI('vitest ./files.ts --coverage --browser=chrome');
result.options;
// {
// coverage: { enabled: true },
// browser: { name: 'chrome', enabled: true }
// }
result.filter;
// ['./files.ts']