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'
ありがとう
特定のテストを実行するには、jest
コマンドを使用する必要があります。 npm test
は機能しません。コマンドラインで直接jest
にアクセスするには、npm i -g jest-cli
またはyarn global add jest-cli
を介してインストールします。
それならjest bar.spec.js
であなたの特定のテストを実行してください。
注 :テストファイルのフルパスを入力する必要はありません。引数は正規表現として解釈されます。ファイルを一意に識別するフルパスの任意の部分で十分です。
あなたがしなければならないのは魔法の呪文を唱えることだけです:
npm test -- SomeTestFileToRun
スタンドアロンの--
は、オプションの終わりを示す* nixマジックです。これは、(NPMの場合)それ以降は実行中のコマンドに渡されることを意味します。この場合はjest
です。余談ですが、次のようにしてjestの使用上の注意を表示できます。
npm test -- --help
とにかく、唱え
npm test -- Foo
指定されたファイル(FooBar.js
)でテストを実行します。ただし、注意してください。
Jestは、名前を大文字と小文字を区別するとして扱います。したがって、大文字と小文字を区別しないが大文字と小文字を区別するファイルシステム(Windows NTFSなど)を使用している場合、変わっているように見えることがあります。
Jestはこの仕様を接頭辞として扱うようです。
だから上記の呪文は
FooBar.js
、Foo.js
およびFooZilla.js
を実行してください。foo.js
を実行しないでください個別のテストを実行するには
ValidationUtilその私のモジュールValidationUtil.spec.js
npm test -t ValidationUtil
-t - >テスト名を含む正規表現を入れた後
npm test
を使用しても、jestがグローバルにインストールされるわけではありません。それは単に "test"があなたのpackage.jsonでjestを使うことにマップされていることを意味します
以下は、プロジェクトのルートレベルで私にとってうまくいったことです。
node_modules/.bin/jest [args]
argsは実行したいテストファイルか、複数のファイルを含むディレクトリです。
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",
...
},
}
npm >= 5.2.0
を実行していて、npm i -d jest
を使用してdevDependencies
としてローカルにjestをインストールした場合は、npx jest /path/to/your/spec.js
を実行することで特定のファイルに対してjestを実行できます。
これは、テストを再起動せずに特定のファイルでテストを動的に実行する方法です。私の反応プロジェクトは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
それが特定のファイルでテストを実行する方法です。
次の2つのオプションがあります。
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を使用します。
私はjestをグローバルにインストールした後、jest myFileToTest.spec.js
を実行しましたが、うまくいきました。