こうこく
作 ▸

WindowsでJestをファイル指定して起動するにはパスの区切り文字にスラッシュを使わないと

JestをCLIで叩くとき引数で対象ファイルを指定できるはずだが、何回やっても 0 matches とか言われて動かなかった

Node.js v14.15.1jest 26.6.3

例えば↓こんなコマンドでファイル指定してJestを起動しようとしたが、これだとテスト対象が見つからない。

※間違い
jest src\lib\hogehoge.spec.ts
出力内容の例
No tests found, exiting with code 1
Run with `--passWithNoTests` to exit with code 0
In C:\dev\kiriukun
  123 files checked.
  testMatch:  - 0 matches
  testPathIgnorePatterns: \\node_modules\\ - 123 matches
  testRegex: .+\.spec\.(tsx?|jsx?)$ - 3 matches
Pattern: src\lib\hogehoge.spec.ts - 0 matches

これでけっこう悩んだのに、理由が↓公式マニュアルに載っていたという

Jest CLI オプション · Jest

引数を付けて jestコマンドを実行した場合、その引数はプロジェクト配下のファイルを照合する正規表現として扱われます。

(省略)

Windows ではパスの区切りとして / を使用するか、 \ をエスケープして \ を使用する必要があります。

Windowsでコマンドプロンプトから叩いてたから当然のようにバックスラッシュ使っちゃってた

Tabキーでサジェストが効かなくて不便だが、スラッシュで区切るようにする

正解
jest src/lib/hogehoge.spec.ts

これでちゃんと動く。

この記事に何かあればこちらまで (非公開)