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

このページの内容

型テスト ​

Vitest では、expectTypeOf または assertType 構文を使用して型テストを記述できます。デフォルトでは、*.test-d.ts ファイル内のすべてのテストが型テストとみなされますが、これは typecheck.include 設定オプションで変更できます。

内部的には、Vitest は設定に応じて tsc または vue-tsc を実行し、その結果を解析します。ソースコード内に型エラーが見つかった場合、Vitest はそれらを出力します。この動作は、typecheck.ignoreSourceErrors 設定オプションで無効にできます。

Vitest はこれらのファイルを実行またはコンパイルしないことに注意してください。これらはコンパイラによって静的に分析されるため、動的な記述は使用できません。つまり、動的なテスト名、test.each、test.runIf、test.skipIf、test.concurrent API は使用できません。ただし、test、describe、.only、.skip、.todo などの他の API は使用できます。

--allowOnly や -t などの CLI フラグも、型チェックでサポートされています。

ts
import { assertType, expectTypeOf } from 'vitest';
import { mount } from './mount.js';

test('my types work properly', () => {
  expectTypeOf(mount).toBeFunction();
  expectTypeOf(mount).parameter(0).toMatchTypeOf<{ name: string }>();

  // @ts-expect-error name は string 型であるべき
  assertType(mount({ name: 42 }));
});

テストファイル内でトリガーされた型エラーは、テストエラーとして扱われるため、プロジェクトの型をテストするために必要なあらゆる型のテクニックを使用できます。

使用可能なマッチャーの一覧は、API セクションを参照してください。

エラーの解釈 ​

expectTypeOf API を使用している場合、読みにくいエラーや意図しないエラーが発生することがあります。

ts
expectTypeOf(1).toEqualTypeOf<string>();
//             ^^^^^^^^^^^^^^^^^^^^^^
// index-c3943160.d.ts(90, 20): Arguments for the rest parameter 'MISMATCH' were not provided.

これは、expect-type が型エラーを処理する方法に起因します。

残念ながら、TypeScript はパッチを適用しないと型メタデータを提供できず、現時点では有用なエラーメッセージを提供できません。しかし、この問題を修正するための取り組みが進められています。より詳細なエラーメッセージが必要な場合は、TypeScript チームによる上記の PR を確認してください。

expectTypeOf API の操作やエラーの理解が難しい場合は、よりシンプルな assertType API を使用することも検討してください。

ts
const answer = 42;

assertType<number>(answer);
// @ts-expect-error answer は string 型ではない
assertType<string>(answer);

TIP

@ts-expect-error 構文を使用する場合、タイプミスがないか確認することを推奨します。これを確認するには、test.include 設定オプションに型ファイルを含めます。これにより、Vitest は実際にこれらのテストを 実行 し、ReferenceError で失敗させることができます。

これはエラーを予期しているため合格しますが、「answer」という単語にタイプミスがあるため、誤検出エラーとなります。

ts
// @ts-expect-error answer は string 型ではない
assertType<string>(answr); //

型チェックの実行 ​

package.json の scripts セクションに次のコマンドを追加します。

json
{
  "scripts": {
    "typecheck": "vitest typecheck"
  }
}

これで型チェックを実行できます。

sh
# npm
npm run typecheck

# yarn
yarn typecheck

# pnpm
pnpm run typecheck

Vitest は、構成に応じて tsc --noEmit または vue-tsc --noEmit を使用するため、これらのスクリプトは CI/CD パイプラインから削除できます。

Pager
前のページモック
次のページVitest UI

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

Copyright (c) 2024 Mithril Contributors

https://v0.vitest.dev/guide/testing-types

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

Copyright (c) 2024 Mithril Contributors