Jest CLI オプション
jest
コマンドラインランナーには、多くの便利なオプションがあります。利用可能なすべてのオプションを表示するには、jest --help
を実行してください。以下に示す多くのオプションは、テストを希望どおりに実行するために組み合わせて使用することもできます。Jestの設定オプションはすべて、CLIからも指定できます。
概要
コマンドラインからの実行
すべてのテストを実行する(デフォルト)
jest
パターンまたはファイル名で指定されたテストのみを実行する
jest my-test #or
jest path/to/my-test.js
hg/gitに基づいて変更されたファイルに関連するテストを実行する(コミットされていないファイル)
jest -o
path/to/fileA.js
とpath/to/fileB.js
に関連するテストを実行する
jest --findRelatedTests path/to/fileA.js path/to/fileB.js
このスペック名と一致するテストを実行する(基本的に、describe
またはtest
内の名前と照合する)。
jest -t name-of-spec
ウォッチモードを実行する
jest --watch #runs jest -o by default
jest --watchAll #runs all tests
ウォッチモードでは、特定のテストセットに焦点を当てるために、ファイルの名前またはパスを指定することもできます。
パッケージマネージャーとの使用
パッケージマネージャーを介してJestを実行する場合でも、コマンドライン引数をJest引数として直接渡すことができます。
代わりに
jest -u -t="ColorPicker"
を使用できます
- npm
- Yarn
- pnpm
npm test -- -u -t="ColorPicker"
yarn test -u -t="ColorPicker"
pnpm test -u -t="ColorPicker"
キャメルケースとダッシュ付き引数のサポート
Jestは、キャメルケースとダッシュ付き引数の両方の形式をサポートしています。次の例は同じ結果になります。
jest --collect-coverage
jest --collectCoverage
引数は混合して使用することもできます。
jest --update-snapshot --detectOpenHandles
オプション
CLIオプションは、設定からの値よりも優先されます。
- キャメルケースとダッシュ付き引数のサポート
- オプション
- 参照
jest <regexForTestFiles>
--bail[=<n>]
--cache
--changedFilesWithAncestor
--changedSince
--ci
--clearCache
--clearMocks
--collectCoverageFrom=<glob>
--colors
--config=<path>
--coverage[=<boolean>]
--coverageDirectory=<path>
--coverageProvider=<provider>
--debug
--detectOpenHandles
--env=<environment>
--errorOnDeprecated
--expand
--filter=<file>
--findRelatedTests <spaceSeparatedListOfSourceFiles>
--forceExit
--help
--ignoreProjects <project1> ... <projectN>
--init
--injectGlobals
--json
--lastCommit
--listTests
--logHeapUsage
--maxConcurrency=<num>
--maxWorkers=<num>|<string>
--noStackTrace
--notify
--onlyChanged
--openHandlesTimeout=<milliseconds>
--outputFile=<filename>
--passWithNoTests
--projects <path1> ... <pathN>
--randomize
--reporters
--resetMocks
--restoreMocks
--roots
--runInBand
--runTestsByPath
--seed=<num>
--selectProjects <project1> ... <projectN>
--setupFilesAfterEnv <path1> ... <pathN>
--shard
--showConfig
--showSeed
--silent
--testEnvironmentOptions=<json string>
--testLocationInResults
--testMatch glob1 ... globN
--testNamePattern=<regex>
--testPathIgnorePatterns=<regex>|[array]
--testPathPattern=<regex>
--testRunner=<path>
--testSequencer=<path>
--testTimeout=<number>
--updateSnapshot
--useStderr
--verbose
--version
--watch
--watchAll
--watchman
--workerThreads
参照
jest <regexForTestFiles>
引数を付けてjest
を実行すると、その引数はプロジェクト内のファイルと照合する正規表現として扱われます。パターンを指定することで、テストスイートを実行できます。パターンに一致するファイルのみが取得され、実行されます。ターミナルによっては、この引数を引用符で囲む必要がある場合があります。例:jest "my.*(complex)?pattern"
。Windowsでは、パスセパレータとして/
を使用するか、\
を\\
としてエスケープする必要があります。
--bail[=<n>]
エイリアス: -b
。失敗したテストスイートがn
個になった時点で、テストスイートをすぐに終了します。デフォルトは1
です。
--cache
キャッシュを使用するかどうか。デフォルトはtrueです。--no-cache
を使用してキャッシュを無効にします。
キャッシュ関連の問題が発生している場合を除き、キャッシュは無効にしないでください。平均して、キャッシュを無効にすると、Jestの速度が少なくとも2倍遅くなります。
キャッシュを検査する場合は、--showConfig
を使用してcacheDirectory
の値を確認してください。キャッシュをクリアする必要がある場合は、--clearCache
を使用してください。
--changedFilesWithAncestor
現在の変更と最後のコミットで行われた変更に関連するテストを実行します。--onlyChanged
と同様に動作します。
--changedSince
指定されたブランチまたはコミットハッシュ以降の変更に関連するテストを実行します。現在のブランチが指定されたブランチから分岐している場合、ローカルで行われた変更のみがテストされます。--onlyChanged
と同様に動作します。
--ci
このオプションが指定されている場合、JestはCI環境で実行されていると想定します。これは、新しいスナップショットが検出された場合の動作を変更します。新しいスナップショットを自動的に保存するという通常の動作ではなく、テストに失敗し、--updateSnapshot
を使用してJestを実行する必要があります。
--clearCache
Jestのキャッシュディレクトリを削除し、テストを実行せずに終了します。オプションが渡された場合、またはJestのデフォルトのキャッシュディレクトリが削除されます。デフォルトのキャッシュディレクトリは、jest --showConfig
を呼び出すことで確認できます。
キャッシュをクリアすると、パフォーマンスが低下します。
--clearMocks
各テストの前に、モック呼び出し、インスタンス、コンテキスト、結果を自動的にクリアします。各テストの前にjest.clearAllMocks()
を呼び出すことと同等です。これは、提供されている可能性のあるモック実装を削除しません。
--collectCoverageFrom=<glob>
rootDir
を基準としたglobパターンで、カバレッジ情報を収集する必要があるファイルに一致します。
--colors
stdoutがTTYでない場合でも、テスト結果の出力を強制的に強調表示します。
あるいは、環境変数FORCE_COLOR=true
を設定して強制的に有効にしたり、FORCE_COLOR=false
を設定してカラー表示を無効にしたりすることもできます。FORCE_COLOR
の使用は、他のすべてのカラーサポートチェックよりも優先されます。
--config=<path>
エイリアス: -c
。テストの検索と実行方法を指定するJest設定ファイルへのパス。設定にrootDir
が設定されていない場合、設定ファイルを含むディレクトリがプロジェクトのrootDir
と見なされます。これは、Jestが設定として使用するJSONエンコードされた値にすることもできます。
--coverage[=<boolean>]
エイリアス: --collectCoverage
。テストカバレッジ情報を収集し、出力でレポートする必要があることを示します。オプションで<boolean>
を渡して、設定で設定されたオプションを上書きできます。
--coverageDirectory=<path>
Jestがカバレッジファイルを書き出すディレクトリ。
--coverageProvider=<provider>
カバレッジのためにコードをインストルメントするために使用するプロバイダーを示します。許容される値はbabel
(デフォルト)またはv8
です。
--debug
Jestの設定に関するデバッグ情報を印刷します。
--detectOpenHandles
Jest のクリーンな終了を妨げているオープンハンドルを収集して出力しようとします。Jest を終了させるために --forceExit
を使用する必要がある場合に、その原因を突き止めるために使用します。これは --runInBand
を意味し、テストは直列に実行されます。async_hooks
を使用して実装されています。このオプションはパフォーマンスに大きな影響を与えるため、デバッグ目的でのみ使用してください。
--env=<environment>
すべてのテストで使用されるテスト環境です。任意のファイルまたはノードモジュールを指定できます。例:jsdom
、node
、または path/to/my-environment.js
。
--errorOnDeprecated
非推奨の API を呼び出すと、役立つエラーメッセージがスローされるようにします。アップグレードプロセスを容易にするのに役立ちます。
--expand
エイリアス: -e
。このフラグを使用すると、パッチではなく完全な差分とエラーが表示されます。
--filter=<file>
フィルタリング関数をエクスポートするモジュールへのパス。この非同期関数は、テストパスのリストを受け取り、{ filtered: Array<{ test: string }> }
という形状のオブジェクトを返すことで、実行から除外するテストを操作できます。特に、既知の壊れたテストをフィルタリングするテストインフラストラクチャと組み合わせて使用する場合に便利です。例:
module.exports = testPaths => {
const allowedPaths = testPaths
.filter(filteringFunction)
.map(test => ({test})); // [{ test: "path1.spec.js" }, { test: "path2.spec.js" }, etc]
return {
filtered: allowedPaths,
};
};
--findRelatedTests <spaceSeparatedListOfSourceFiles>
引数として渡されたソースファイルのスペース区切りリストをカバーするテストを検索して実行します。最小限のテストを実行するために、pre-commit フックの統合に役立ちます。ソースファイルのテストカバレッジを含めるために --coverage
と一緒に使用できます。--collectCoverageFrom
引数を重複させる必要はありません。
--forceExit
すべてのテストの実行が完了したら、Jest を強制終了します。これは、テストコードによって設定されたリソースを適切にクリーンアップできない場合に役立ちます。
この機能は緊急脱出用です。テスト実行の最後に Jest が終了しない場合、外部リソースが保持されているか、コード内でタイマーが保留されています。Jest がクリーンにシャットダウンできるように、各テスト後に外部リソースを破棄することをお勧めします。--detectOpenHandles
を使用して追跡できます。
--help
このページと同様のヘルプ情報を表示します。
--ignoreProjects <project1> ... <projectN>
指定されたプロジェクトのテストを無視します。Jest は、構成内の属性 displayName
を使用して各プロジェクトを識別します。このオプションを使用する場合は、すべてのプロジェクトに displayName
を指定する必要があります。
--init
基本的な設定ファイルを作成します。プロジェクトに基づいて、Jest はいくつかの質問を行い、各オプションの簡単な説明を含む jest.config.js
ファイルの作成に役立ちます。
--injectGlobals
Jest のグローバル変数(expect
、test
、describe
、beforeEach
など)をグローバル環境に挿入します。これを false
に設定する場合は、@jest/globals
からインポートする必要があります。例:
import {expect, jest, test} from '@jest/globals';
jest.useFakeTimers();
test('some test', () => {
expect(Date.now()).toBe(0);
});
このオプションは、デフォルトの jest-circus
テストランナーでのみサポートされています。
--json
テスト結果を JSON 形式で出力します。このモードでは、その他のすべてのテスト出力とユーザーメッセージは stderr に送信されます。
--lastCommit
直近のコミットで変更されたファイルに影響を受けるすべてのテストを実行します。--onlyChanged
と同様に動作します。
--listTests
引数を指定して Jest が実行するすべてのテストファイルを一覧表示し、終了します。
--logHeapUsage
各テストの後、ヒープ使用量をログ出力します。メモリリークのデバッグに役立ちます。node では --runInBand
と --expose-gc
と組み合わせて使用してください。
--maxConcurrency=<num>
Jest が同時に実行するテスト数を指定された数以上にしないようにします。test.concurrent
を使用するテストのみに影響します。
--maxWorkers=<num>|<string>
エイリアス: -w
。テストの実行のためにワーカープールが生成するワーカーの最大数を指定します。シングルランモードでは、これはマシンの利用可能なコア数からメインスレッド分の 1 を引いた数にデフォルト設定されます。ウォッチモードでは、Jest が邪魔にならず、マシンが停止しないように、利用可能なコア数の半分にデフォルト設定されます。CI などのリソースが限られた環境では調整する必要がある場合がありますが、デフォルト設定はほとんどのユースケースで適切です。
利用可能なCPUが可変である環境では、パーセンテージベースの設定を使用できます:--maxWorkers=50%
--noStackTrace
テスト結果出力でのスタックトレースを無効にします。
--notify
テスト結果の通知を有効にします。JavaScript テスト以外のことに意識を集中させたくない場合に便利です。
--onlyChanged
エイリアス: -o
。現在のリポジトリでどのファイルが変更されたかに基づいて、実行するテストを特定しようとします。現在 git/hg リポジトリでテストを実行している場合にのみ機能し、静的な依存関係グラフ(つまり、動的な require はない)が必要です。
--openHandlesTimeout=<milliseconds>
--detectOpenHandles
と --forceExit
が無効になっている場合、このミリ秒数後にプロセスがクリーンに終了しなかった場合、Jest は警告を出力します。0
の値は警告を無効にします。デフォルトは 1000
です。
--outputFile=<filename>
--json
オプションも指定されている場合、テスト結果をファイルに書き込みます。返される JSON 構造は、testResultsProcessor で説明されています。
--passWithNoTests
ファイルが見つからない場合でも、テストスイートがパスするようにします。
--projects <path1> ... <pathN>
指定されたパスにある 1 つ以上のプロジェクトからテストを実行します。パスグロブも受け付けます。このオプションは、projects
設定オプションの CLI 同等物です。
指定されたパスに設定ファイルが見つかった場合、それらの設定ファイルに指定されているすべてのプロジェクトが実行されます。
--randomize
ファイル内のテストの順序をシャッフルします。シャッフルはシードに基づいています。--seed=<num>
を参照してください。
このオプションが設定されている場合、シード値が表示されます。--showSeed
CLI オプションの設定と同等です。
jest --randomize --seed 1234
このオプションは、デフォルトの jest-circus
テストランナーでのみサポートされています。
--reporters
指定されたレポーターを使用してテストを実行します。レポーターオプション は CLI では使用できません。複数のレポーターを使用した例
jest --reporters="default" --reporters="jest-junit"
--resetMocks
各テストの前にモックの状態を自動的にリセットします。各テストの前に jest.resetAllMocks()
を呼び出すことと同等です。これにより、モックの偽の実装は削除されますが、初期の実装は復元されません。
--restoreMocks
各テストの前にモックの状態と実装を自動的に復元します。各テストの前に jest.restoreAllMocks()
を呼び出すことと同等です。これにより、モックの偽の実装は削除され、初期の実装が復元されます。
--roots
Jest がファイルの検索に使用するディレクトリのパスリスト。
--runInBand
エイリアス: -i
。テストを実行する子プロセスのワーカープールを作成するのではなく、現在のプロセスですべてのテストを直列に実行します。デバッグに役立ちます。
--runTestsByPath
正確なパスで指定されたテストのみを実行します。これにより、正規表現に変換してすべてのファイルと照合する必要がなくなります。
例えば、次のファイル構造の場合
__tests__
└── t1.test.js # test
└── t2.test.js # test
パターンを使用して実行すると、テストは見つかりません
jest --runTestsByPath __tests__/t
出力
No tests found
ただし、正確なパスを渡すと、指定されたテストのみが実行されます
jest --runTestsByPath __tests__/t1.test.js
出力
PASS __tests__/t1.test.js
デフォルトの正規表現マッチングは小規模な実行では問題ありませんが、複数のパターンが提供されている場合や、多くのテストに対しては遅くなります。このオプションは正規表現マッチングロジックを置き換えることで、Jest が特定のテストファイルをフィルタリングする時間を最適化します。
--seed=<num>
テストファイルでjest.getSeed()
を介して取得できるシード値を設定します。シード値は、-0x80000000
から 0x7fffffff
の範囲内(10進数で -2147483648
(-(2 ** 31)
) から 2147483647
(2 ** 31 - 1
))でなければなりません。
jest --seed=1324
このオプションを指定しない場合、Jestはランダムに値を生成します。テストレポートのサマリーにシード値を表示するには、--showSeed
フラグを使用します。
--selectProjects <project1> ... <projectN>
指定されたプロジェクトのテストを実行します。Jestは、構成内の属性displayName
を使用して各プロジェクトを識別します。このオプションを使用する場合は、すべてのプロジェクトにdisplayName
を指定する必要があります。
--setupFilesAfterEnv <path1> ... <pathN>
各テストの前に、テストフレームワークの設定または設定を行うコードを実行するモジュールのパスの一覧です。セットアップスクリプトによってインポートされたファイルは、テスト中はモックされません。
--shard
(?<shardIndex>\d+)/(?<shardCount>\d+)
の形式で実行するテストスイートのシャードです。
shardIndex
は選択するシャードを示し、shardCount
はスイートを分割するシャードの数を制御します。
shardIndex
とshardCount
は、1以上の正の数でなければならず、shardIndex
はshardCount
以下でなければなりません。
shard
が指定されている場合、構成済みのtestSequencer
はshard
メソッドを実装する必要があります。
たとえば、スイートを3つのシャードに分割し、それぞれがテストの3分の1を実行するには
jest --shard=1/3
jest --shard=2/3
jest --shard=3/3
--showConfig
Jestの設定を出力して終了します。
--showSeed
テストレポートのサマリーにシード値を出力します。--seed=<num>
の詳細を参照してください。
設定でも設定できます。showSeed
を参照してください。
--silent
テストがコンソールにメッセージを出力することを防ぎます。
--testEnvironmentOptions=<json string>
testEnvironment
に渡されるオプションを含むJSON文字列です。関連するオプションは環境によって異なります。
--testLocationInResults
テスト結果にlocation
フィールドを追加します。レポーターでテストの位置を報告する場合に便利です。
結果のオブジェクトでは、column
は0から始まるインデックスで、line
は0から始まりません。
{
"column": 4,
"line": 5
}
--testMatch glob1 ... globN
Jestがテストファイルの検出に使用するglobパターンです。詳細については、testMatch
設定を参照してください。
--testNamePattern=<regex>
エイリアス: -t
。正規表現に一致する名前のテストのみを実行します。たとえば、名前が'GET /api/posts with auth'
のような認証に関連するテストのみを実行する場合は、jest -t=auth
を使用できます。
正規表現は、テスト名とその周囲のすべてのdescribeブロックを組み合わせた完全名に対して照合されます。
--testPathIgnorePatterns=<regex>|[array]
テストを実行する前に、すべてのテストパスに対してテストされる正規表現パターンの文字列、またはその配列です。--testPathPattern
とは異なり、提供された正規表現と一致しないパスを持つテストのみを実行します。
配列として渡すには、エスケープされた括弧とスペース区切りの正規表現(例:\(/node_modules/ /tests/e2e/\)
)を使用します。あるいは、/node_modules/|/tests/e2e/
のように正規表現を1つの正規表現に結合することで、括弧を省略することもできます。これら2つの例は同等です。
--testPathPattern=<regex>
テストを実行する前に、すべてのテストパスに対して照合される正規表現パターンの文字列です。Windowsでは、パスセパレーターとして/
を使用するか、\
を\\
としてエスケープする必要があります。
--testRunner=<path>
カスタムテストランナーを指定できます。
--testSequencer=<path>
カスタムテストシーケンサーを指定できます。詳細については、testSequencer
設定を参照してください。
--testTimeout=<number>
テストのデフォルトのタイムアウト時間(ミリ秒単位)。デフォルト値:5000。
--updateSnapshot
エイリアス: -u
。このテスト実行中に失敗したすべてのスナップショットを再記録するには、このフラグを使用します。テストスイートパターンまたは--testNamePattern
と共に使用して、スナップショットを再記録できます。
--useStderr
すべての出力をstderrにリダイレクトします。
--verbose
テストスイート階層を含む個々のテスト結果を表示します。
--version
エイリアス: -v
。バージョンを出力して終了します。
--watch
ファイルの変更を監視し、変更されたファイルに関連するテストを再実行します。ファイルが変更されたときにすべてのテストを再実行する場合は、代わりに--watchAll
オプションを使用します。
--watch
を使用して監視モードを有効にした場合、明示的に監視モードを無効にするには--no-watch
(または--watch=false
)を使用します。ほとんどのCI環境では、これは自動的に処理されます。
--watchAll
ファイルの変更を監視し、何かが変更されたときにすべてのテストを再実行します。変更されたファイルに依存するテストのみを再実行する場合は、--watch
オプションを使用します。
--watchAll
を使用して監視モードを有効にした場合、明示的に監視モードを無効にするには--no-watchAll
(または--watchAll=false
)を使用します。ほとんどのCI環境では、これは自動的に処理されます。
--watchman
ファイルクロールにwatchman
を使用するかどうか。デフォルトはtrue
です。--no-watchman
を使用して無効にします。
--workerThreads
並列化にワーカーのスレッドを使用するかどうか。子プロセスがデフォルトで使用されます。
これは実験的な機能です。workerThreads
設定オプションの詳細を参照してください。