2021年9月19日日曜日

Jestで特定のファイルのみテストができなかった問題

 Jestで特定のテストだけ実行したい場合ってあるじゃないですか。

ここに書いてあるとおりjest path/to/my-test.jsのように実行したんですがNo tests found, exiting with code 1というメッセージが出て何もテストできずに終了。テスト対象のファイルもちゃんと存在してるし意味がわからない。

しばらく悩んでも答えが出なかったので放置していたんですが、ある日こんな指摘をもらいました。

「Jestの引数はファイルのパスじゃなくて正規表現パターンだよ!」

どれどれ。。。

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

ほんまや。

それが何か関係あるの?と思った方。実は、テスト対象のファイルには$が含まれていたために正規表現のパターンとしてちゃんとマッチングしなかったようです。

解決方法は2つ。要はメタ文字を無効化すればいいので、

  • $[$]で置き換える
  • $\\$で置き換える

このどちらか。後者は単に\$だとバックスラッシュがシェルに吸収されてしまい、Jestにはただの$が渡されます。

偉そうに解説していますが、アホらしいミスをやらかしました。。。

0 件のコメント:

コメントを投稿