Jestで1つのテストのみを実行します


95

非常に単純です。Jestで1つのテストだけを実行したいと思います。

私は置くit.onlydescribe.only、しかしそれはまだたくさんのテストを実行します。前回のコミット以降、すべてのテストを実行すると思いますが、onlyフラグを明示的に設定した状態でこの動作を行うべきではありませんか?

この動作の原因と単一のテストの実行方法は何ですか?



「重複フラグ」を受け入れると、「あなたの質問は重複としてマークされ、将来の読者を元の質問に誘導し、それ以上の回答がここに投稿されないようにします」。それぞれの質問と回答は異なるアプローチを取っているので、私はそれらが完全に同じであるとは思いません。
jpenna 2018

@jpenna:元の質問を見てください。同じ答えが与えられました。
ダンダスカレスク

回答:


122

Jestはテストの実行並列化し、どのテストを実行する必要があり、どのテストを実行しないかを事前に認識していません。つまり、「fit」を使用すると、そのファイルで1つのテストのみが実行されますが、プロジェクト内の他のすべてのテストファイルは実行されます

fitfdescribeそしてit.onlydescribe.only私だけを実行し、他のテストをスキップし、同じ目的を持っています。

ソース:https//github.com/facebook/jest/issues/698#issuecomment-177673281


次のjestようなテストを実行するときは、フィルタリングメカニズムを使用してください

jest --config=jest.config.json --watch

ターミナルの指示に従うだけで、testnameまたはfilenameでテストをフィルタリングできます

ここに画像の説明を入力してください

を押してp、ファイル名を入力します

ここに画像の説明を入力してください

次に、を使用describe.onlyit.onlyて、フィルタリングされ、テストされたファイルから他のすべてのテストをスキップします。


1
私はこのフィルターをファイルごとに実行していますが、それは奇妙です...それで.only、同じファイルのテストでのみ機能しますか?
jpenna 2017年

2
ソースコードで.onlyを元に戻し、それをコミットするのを忘れていたので、私はそれが.onlyのものよりもさらに好きです。
Dziamid

3
テストはスキップされますが、各例でテスト対象のコードを評価しているようです。2019年に1つのテストだけを実行する方法は本当にありませんか?
adaam

@adaamあなたの質問を正しく理解したかどうかわかりませんので、間違っている場合は訂正してください。テストが別々のファイルにある場合、パターンを使用してテストを明示的に実行すると、特定のファイルのコードのみが実行されます。あなたが使用している場合でも、特定のファイルのコードが実行されると、そのファイル内のコード全体がそのように解析されるit.onlyか、it.skip構文エラーが含まれている単一のテストのために、すべてのテストは失敗します。もちろん、パターンで除外されたファイルのコードは実行されません。imgur.com/z9FlQEZ
Dawid Karabin

@hinokカルーセルコンポーネントにconsole.logを貼り付けて、テストランナーを再実行します。私にとってはif.only、カルーセルコンポーネントのconsole.logsを何度も使用しても、ウォッチパターンでそのコンポーネントのスキップ/スキップ解除されたテストがあります。
adaam

29

it.onlyそしてdescribe.onlyあなたは、複数のファイル内のフィルタのテストに問題がある場合にのみ、彼らはしているモジュールのための仕事。は、使用することができますjest -t name-of-spec(記述またはテストに名前戦)スペック名と一致するテストをフィルタリングし、。
ソース:https//facebook.github.io/jest/docs/en/cli.html

たとえば、私は現在このように書いているテストに焦点を合わせています(テストスクリプトはpackage.json):
npm test -- -t "test foo"


4
私の場合、これでもすべてのテストが実行されますが、理由は
Kenny

私が考えることができる唯一の説明は、すべての単一のテスト名(またはテストdescribeブロック)に存在する文字列引数を渡しているということです。その場合は、焦点を当てたい正確なテスト名に絞り込む必要があります。
rodgobbi

:この答えは別の質問のためにはるかに適しているようだstackoverflow.com/questions/42827054/...
千木郷

8

こんな感じです:

jest sometest.test.js -t "some expression to match a describe or a test"

sometest.test.js-tオプションに基づいて名前と一致するすべてのファイルをテストします。特定のファイルのみをテストする場合は、次のようにします。

jest src/user/.../sometest.test.js

VSCodeの中で、このオプションを実装するために探している人のためにlaunch.json:特定のテストケースでテストをトリガする設定ファイルmedium.com/better-programming/...
Gusの

8

私にとっては、次のような2つのパラメータを使用すると機能します。

yarn test --watch -f "src/...fullpath.../reducer.spec.js" -t "Name of the test"

フラグ:

--watch: is optional

-f: will do filtering of your files, so if you have a lot of tests with the same name, specify the full path to the exact file

-t: works with 'describe' name or 'it' name of your test
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.