web-dev-qa-db-ja.com

Jestを使用して単一のファイルをテストする方法

Jestを使って複数のファイルをテストすることはできますが、単一のファイルをテストする方法を理解することはできません。

私は持っています:

  • 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'

ありがとう

191
Musket

特定のテストを実行するには、jestコマンドを使用する必要があります。 npm testは機能しません。コマンドラインで直接jestにアクセスするには、npm i -g jest-cliまたはyarn global add jest-cliを介してインストールします。

それならjest bar.spec.jsであなたの特定のテストを実行してください。

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

131
ncuillery

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

npm test -- SomeTestFileToRun

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

npm test -- --help

とにかく、唱え

npm test -- Foo

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

  • Jestは、名前を大文字と小文字を区別するとして扱います。したがって、大文字と小文字を区別しないが大文字と小文字を区別するファイルシステム(Windows NTFSなど)を使用している場合、変わっているように見えることがあります。

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

だから上記の呪文は

  • FooBar.jsFoo.jsおよびFooZilla.jsを実行してください。
  • foo.jsを実行しないでください
237
Nicholas Carey

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

ValidationUtilその私のモジュールValidationUtil.spec.js

npm test -t ValidationUtil

-t - >テスト名を含む正規表現を入れた後

16
cabaji99

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

以下は、プロジェクトのルートレベルで私にとってうまくいったことです。

node_modules/.bin/jest [args]

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

15
AeroHil

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

yarn test src/lib/myfile.test.js

これは、私のpackage.jsonのうち、jest installをローカルパッケージにしたものです(関連する部分は削除しました)。

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

}
11

npm >= 5.2.0を実行していて、npm i -d jestを使用してdevDependenciesとしてローカルにjestをインストールした場合は、npx jest /path/to/your/spec.jsを実行することで特定のファイルに対してjestを実行できます。

4
bmaggi

これは、テストを再起動せずに特定のファイルでテストを動的に実行する方法です。私の反応プロジェクトは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.

これは、「ログイン」フォルダーの「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
deko

次の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
Hay OUE

私はjestをグローバルにインストールした後、jest myFileToTest.spec.jsを実行しましたが、うまくいきました。

0
URL87