Jestを使用して単一のファイルをテストするにはどうすればよいですか?


360

Jestを使用して複数のファイルをテストできますが、1つのファイルをテストする方法がわかりません。

私が持っています:

  • 走る npm install jest-cli --save-dev
  • 更新package.json: `{..." scripts ":{" test ":" jest "} ...}
  • いくつかのテストを書いた。

実行npm testは期待どおりに機能します(現在、14のテストを実行しています)。

単一のファイルをテストするにはどうすればよいapp/foo/__tests__/bar.spec.jsですか。

npm test app/foo/__tests__/bar.spec.js(プロジェクトルートから)実行しようとしましたが、次のエラーが発生します。

npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'

ありがとう

回答:


297

特定のテストを実行するには、jestコマンドを使用する必要があります。npm test動作しないでしょう。jestコマンドラインから直接アクセスするには、npm i -g jest-cliまたはを使用してインストールしyarn global add jest-cliます。

次に、で特定のテストを実行しますjest bar.spec.js

:テストファイルへのフルパスを入力する必要はありません。引数は正規表現として解釈されます。ファイルを一意に識別するフルパスのどの部分でも十分です。


5
残念ながら、これは私にはうまくいきません。実行するとjest bar.spec.js与えるjest: command not found。Jestがインストールされていることを確認しました(をnpm list -g jest示しますjest@0.1.37)。FWIW、npm testそれを使用して実行すると、を使用しますjest-cli
マスケット、2015

4
はい、jest-cli適切なモジュールですnpm install -g jest-cli。グローバルにインストールしてください。jestnpmは... 他の何か
ncuillery

56
不正解です。npm test workingは、jestがグローバルにインストールされていることを意味しません。これは、jestがプロジェクト内にインストールされていることを意味します。
Chiedo

20
@ChiedoJohnが言ったように。世界的にインストールせずに、それを実行するには、アプリのルートからこれを実行することができます:node_modules/.bin/jest args
エディ・モンジュジュニア

3
デフォルトのジャスミン設定を使用している場合は、のfit代わりにを使用して単一のテストに集中できますit
eremzeit 2016

380

あなたがしなければならないすべては魔法の呪文を唱えることです:

npm test -- SomeTestFileToRun

スタンドアロン--は、オプションの終わりをマークするための* nixマジックです。つまり、(NPMの場合)以降のすべてが実行中のコマンドに渡されることを意味しますjest。この場合は。余談ですが、次のように言って、冗談の使用方法を表示できます。

npm test -- --help

とにかく、詠唱

npm test -- Foo

指定されたファイル(FooBar.js)でテストを実行します。ただし、次のことに注意してください。

  • Jestは名前を大文字と小文字を区別するものとして扱うため、大文字と小文字を区別しないが大文字と小文字を保持するファイルシステム(Windows NTFSなど)を使用している場合、奇妙に思われることが発生する可能性があります。

  • Jestは仕様を接頭辞として扱うようです。

したがって、上記の呪文は

  • ファイル名を指定して実行FooBar.jsFoo.jsおよびFooZilla.js
  • しかし実行しない foo.js

これを実行するときおかげで、残念ながら私は同じエラーを取得:npm ERR! Error: ENOENT, open '<path to project>/node_modules/<name of file>/package.json'
マスケット

1
コマンドライン以外のjestテストを実行するための代替方法はありますか?、既存のプロジェクトレストAPIに投稿リクエストを行うかのように、CSRFトークンの問題が発生します。既存のプロジェクトにjestテストを設定するにはどうすればよいですか?' localhost:8000 / rest-api ' の代わりに '/ rest-api'を使用してリクエストの処理を開始するように
Suyog Sawant

@SuyogSawant:コメントではありません。それ自体が問題です。StackOverflowで確認する必要があります。
ニコラスキャリー

1
私の場合、単純でnpm test ToDoForm.test.jsは機能しjest ToDoForm.test.jsなかったが機能しなかった
Tomasz Mularczyk '21 / 01/17

大文字と小文字の区別に関する2番目のポイントが、上記で提供した呪文と一致しません。
NSjonas

38

個別のテストを実行するには:

npm test -t ValidationUtil # `ValidationUtil` its my module `ValidationUtil.spec.js`

-t-その後、テスト名を含む正規表現を置きます。


1
驚くばかり!よくできました!
フラビオ

21

使用npm testしても、jestがグローバルにインストールされるわけではありません。これは、「test」がpackage.jsonでjestを使用するようにマッピングされていることを意味します

以下は、プロジェクトのルートレベルで機能したものです。

node_modules/.bin/jest [args]

argsは、実行するテストファイル、または複数のファイルを含むディレクトリです。


私のために働きました;)
wogsland 2017年

1
ありがとう!これは私にとって非常に役に立ちました!
Isaac

5
でバイナリを実行するショートカットnode_modules/.binは、npxコマンドを使用することです。例えばnpx jest [args]
セルジオ・マッツォレーニ

16

使用するyarn場合は、直後に.spec.jsまたは.test.jsファイルを追加できます。

yarn test src/lib/myfile.test.js

これは、package.jsonローカルパッケージとしてjestをインストールした私の部分です(関連する部分を削除しました)。

{
...
  "scripts": {
    "test": "jest",
    "testw": "jest --watch",
    "testc": "jest --coverage",
...
  },
  "devDependencies": {
    "jest": "^18.1.0",
    ...
  },

}


6

あなたが実行している場合npm >= 5.2.0、あなたは冗談ローカルとしてインストールしているdevDependenciesnpm i -d jestあなたが行うことによって、特定のファイルに対して冗談を実行することができますnpx jest /path/to/your/spec.js


5

私たちは、使用しているnrwl-NXをた角度。この場合、次のコマンドを使用できます。

npm test <ng-project> -- --testFile "file-name-part"

ノート:

  • npm testで指定されたテストスクリプトを実行しますpackage.json"test:client": "ng test client"
  • したがって、コマンドの残りの部分はng testに渡されます
    • <ng-project> はプロジェクトの名前です angular.json
      • このパラメーターを省略すると"defaultProject"(で指定されたangular.json)が使用されます(テストがデフォルトのプロジェクトにない場合は指定する必要があります)
    • 次に、使用されているビルダーを確認する必要があります。
      • angular.jsonに移動"project"- "<ng-project>"- "architect"-"test"
      • を確認"builder"します。この場合は次のようになります。"@nrwl/jest:jest"
    • これでビルダーがわかったので、使用可能なコマンドラインパラメーターを見つける必要があります。
      • コマンドラインで実行npm test server -- --helpすると、使用可能なすべてのオプションが表示されます
      • またはオンラインドキュメントを確認してください
    • --testFileここで使用されるオプションの1つは

それは私たちがnxを使用しているため、私のためにそれを行ったものです。ありがとうございました。
user906573

4

これは、テストを再起動せずに特定のファイルに対して動的にテストを実行する方法です。私の反応プロジェクトが作成されましたcreate-react-app

変更のテストを監視し、変更を加えると自動的にテストを実行します。

これが端末のテスト結果の最後に表示されるものです。

Test Suites: 16 passed, 16 total
Tests:       98 passed, 98 total
Snapshots:   0 total
Time:        5.048s
Ran all test suites.

Watch Usage: Press w to show more.

Wを押す

Watch Usage
  Press f to run only failed tests.
  Press o to only run tests related to changed files.
  Press q to quit watch mode.
  Press p to filter by a filename regex pattern.
  Press t to filter by a test name regex pattern.
  Press Enter to trigger a test run.

次にPを押します

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern 

 Start typing to filter by a filename regex pattern.

これは、「Login」フォルダにある「index.es6.js」ファイルを実行したい後です

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern  login/index

 Pattern matches 1 file
  src/containers/Login/index.es6.test.js

これが、特定のファイルに対してテストを実行する方法です。



1

jestをグローバルにインストールして実行jest myFileToTest.spec.jsしたところ、うまくいきました


1

次の2つのオプションがあります。

  • オプション1:コマンドライン。次のコマンドを実行できます
node '/Users/complete-path-to-you-project/your-project/node_modules/.bin/jest' '/Users/complete-path-to-you-project/your-project/path-to-your-file-within-the-project/your-file.spec.ts'

これにより、Jestをグローバルにインストールする必要がなくなります。プロジェクトで使用されるjestを使用します。

  • オプション2:VS Codeを使用している場合、これを行うための優れたプラグインがあります:Jest Runner。実行したいテストを右クリックするだけで、ファイルごとにテストを実行できるだけでなく、特定のスイートや仕様を実行することもできます。

0

Jestは、渡されたものを正規表現パターンとして使用します。それは一致します。

特定のテストファイルを実行する場合。それを行うための最良の方法は、その完全なパスを正確にすることです。((src / XFolder / index.spec.ts)のように特定の相対パスを正確に指定することはできます)。

フルパスをディレクトリとLinuxに提供する最も簡単な方法は次のとおりです。

jest $PWD/index.spec.ts

変数$ PWDの使用に注意してください。

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

窓用!(更新予定)


0

AngularとJestでは、これを「scripts」の下のpackage.jsonに追加できます

"test:debug": "node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand"

次に、特定のファイルの単体テストを実行するには、ターミナルでこのコマンドを記述できます

npm run test:debug modules/myModule/someTest.spec.ts

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