ファイルfix-order-test.jsの中に「入れ子になった子で動作する」というテストがあります。
以下を実行すると、ファイル内のすべてのテストが実行されます。
jest fix-order-test
単一のテストのみを実行する方法指定された正規表現のファイルを検索するので、以下は動作しません。
jest 'works with nested children'
コマンドラインから--testNamePattern
または-t
フラグを使用してください
jest -t 'fix-order-test'
これにより、指定したテスト名のパターンと一致するテストのみが実行されます。それは Jest docs にあります。
もう1つの方法は、ウォッチモードjest --watch
でテストを実行してからを押すことです。 p テストファイル名を入力してテストをフィルタリングする t 単一のテスト名を実行します。
jestのドキュメント 以下を推奨します:
テストが失敗した場合、最初に確認することの1つは、それが実行される唯一のテストであるときにテストが失敗したかどうかです。 Jestでは、1つのテストだけを実行するのが簡単です - 一時的にその
test
コマンドをtest.only
に変更するtest.only('this will be the only test that runs', () => { expect(true).toBe(false); });
他の回答で述べたように、test.only
は同じファイルの他のテストを除外するだけです 。他のファイルのテストはまだ実行されます。 ????
そのため、単一のテストを実行するには、2つの方法があります。
オプション1: /あなたのテスト名がユニークであるなら、あなたは監視モードの間にt
を入力して、あなたが実行したいテストの名前を入力することができます。
オプション2:
p
を押して、実行したいファイル名の正規表現を入力してください。 (Jestをウォッチモードで実行すると、このような関連コマンドが表示されます)。it
をit.only
に変更します。上記のどちらの方法でも、Jestは指定したファイル内で単一のテストのみを実行します。 ????
テストに集中したり除外したりするためにf
またはx
を使用することもできます。例えば
fit('only this test will run', () => {
expect(true).toBe(false);
});
it('this test will not run', () => {
expect(true).toBe(false);
});
xit('this test will be ignored', () => {
expect(true).toBe(false);
});
上記のように、あなたはコマンドを実行することができます
jest -t 'fix-order-test'
it
ブロックの中にdescribe
がある場合は、実行する必要があります。
jest -t '<describeString> <itString>'
最新のjestバージョン では、次のいずれかを使用して1つのテストのみを実行できます。テストスイートも同様です。
it.only('test 1', () => {})
test.only('test 1', () => {})
fit('test 1', () => {})
テスト名が一意の場合、jest 'test 1'
も機能する可能性があります。
コマンド:
node <path-to-jest> -i <you-test-file> -c <jest-config> -t "<test-block-name>"
<path-to-jest>
:node_modules\jest\bin\jest.js
node_modules/.bin/jest
-i <you-test-file>
:テストを含むファイルへのパス(js
またはts
)-c <jest-config>
:別のJest設定ファイル(JSON)へのパス。あなたがあなたのJest設定をpackage.json
に保存するなら、あなたはこのパラメータを指定する必要はありません(Jestはあなたの助けなしにそれを見つけるでしょう)-t <the-name-of-test-block>
:実際にはdescribe(...)
、it(...)
、またはtest(...)
ブロックの名前(最初のパラメーター)です。例:
describe("math tests", () => {
it("1 + 1 = 2", () => {
expect(1 + 1).toBe(2);
});
it("-1 * -1 !== -1", () => {
expect(-1 * -1).not.toBe(-1);
});
});
だから、コマンド
node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"
it("1 + 1 = 2", ...)
をテストしますが、-t
パラメータを"math tests"
に変更すると、describe("math tests",...)
ブロックから両方のテストを実行します。
備考
node_modules/.bin/jest
をnode_modules\jest\bin\jest.js
に置き換えます。'--inspect-brk'
パラメータを追加します。Jestをインストールすると、 NPMスクリプト を使用してこのコマンドの構文を単純化できます(上記)。 "package.json"
で、"scripts"
セクションに新しいスクリプトを追加します。
"scripts": {
"test:math": "jest -i test/my-tests.js -t \"math tests\"",
}
この場合、フルパスではなくエイリアス'jest'
を使用します。また、設定ファイルのパスも"package.json"
に配置することができるので指定しません。Jestはデフォルトでそれを調べます。これでコマンドを実行できます。
npm run test:math
そして2つのテストを含む"math tests"
ブロックが実行されます。あるいは、もちろん、特定のテストをその名前で指定することもできます。
もう1つのオプションは、<the-name-of-test-block>
スクリプトの外側に"test:math"
パラメーターをプルし、それをNPMコマンドから渡すことです。
package.json:
"scripts": {
"test:math": "jest -i test/my-tests.js -t",
}
コマンド:
npm run test:math "math tests"
これで実行テストの名前をもっと短いコマンドで管理できます。
備考
'jest'
コマンドはNPMスクリプトで機能します。npm ライフサイクルスクリプトを実行するときに
"./node_modules/.bin"
をPATH
環境変数の最初のエントリにするので、プログラムがグローバルにインストールされていなくても、これはうまく機能します( NPM blog )。
node
ではなくbinary/CLIを介して実行されるため、この方法ではデバッグできません。Visual Studio Codeを使用している場合は、それを利用してF5
ボタンを押すことで現在選択されているテストを(コードエディタで)実行できます。これを行うには、".vscode/launch.json"
ファイルに新しい launch構成ブロック を作成する必要があります。その設定では、実行時に適切な(残念なことに 常にではない )値に置き換えられる 事前定義変数 を使用します。利用可能なものすべての中で、私たちはこれらだけに興味があります。
${relativeFile}
- ${workspaceFolder}
に相対して現在開かれているファイル${selectedText}
- アクティブファイルで現在選択されているテキストしかし、起動設定を書き出す前に、'test'
に'package.json'
スクリプトを追加する必要があります(まだ持っていない場合)。
package.json:
"scripts": {
"test": "jest"
}
それなら、起動設定でそれを使うことができます。
起動設定:
{
"type": "node",
"request": "launch",
"name": "Run selected Jest test",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run-script",
"test"
],
"args": [
"--",
"-i",
"${relativeFile}",
"-t",
"${selectedText}"
],
"console": "integratedTerminal",
}
実際には、この回答で前述したコマンドと同じ動作をします。準備が整いましたので、コマンドパラメータを手動で書き換えることなく、必要なテストを実行できます。
あなたがする必要があるのはこれだけです:
'F5'
ボタンを押してください。そして、やあ!
今すぐあなたが望む任意のテストを実行するには、エディタでそれを開き、その名前を選択してF5を押します。
残念ながら、これはWindowsマシンでは「無効」にはならないでしょう。なぜなら、それらは${relativeFile}
変数をパス で逆にした で置き換え、Jestがそのようなパスを理解できないからです。
備考
'--inspect-brk'
パラメータを追加することを忘れないでください。'package.json'
に含まれていると想定していません。VS Codeでは、これでブレークポイントを使って1つのJestテストだけを実行/デバッグできます。 https://github.com/Microsoft/vscode-recipes/tree/master/debugging-jest-tests
私のlaunch.json
はこの中にあります:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Jest All",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["--runInBand"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"windows": {
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
}
},
{
"type": "node",
"request": "launch",
"name": "Jest Current File",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["${relativeFile}"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"windows": {
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
}
}
]
}
そしてこれはpackage.json
にあります:
"scripts": {
"test": "jest"
}
test
(またはit
)をtest.only
(またはit.only
)に変更します。 1つのテストスイート(いくつかのテスト)を実行するには、describe
をdescribe.only
に変更します。Jest Current File
を選択します。./node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t 'show expanded'
./node_modules/.bin/...
は、ローカルにインストールされたパッケージに同梱されている、ローカルにインストールされたjest(またはmochaまたは...)バイナリにアクセスするための素晴らしい方法です。 (はい、あなたのnpmスクリプトでは、何もすることなくjest
をすることができますが、これはコマンドラインでは便利です...(これはデバッグ設定のための良いスタートでも、どちらでも構いません IDE 使っています...)package.json
の中のスクリプトを覗く)、これはあなたが必要とするものです。--runInBand
- 言ったように、あなたの設定については知りませんが、もしあなたが単一のテストを開発/修正することに集中すれば、あなたはむしろWebワーカーに対処したくないです...-t
を使用できます(ここでは、名前にshow expanded
を含むもの)。そのファイルに.only()
を付け加えても同じ効果が得られます。これでjest-watch-typeahead
と呼ばれるNice jestプラグイン ができました。これはこのプロセスをずっと簡単にします。
スクリプトコマンドとしてjest
を実行している場合(npm test
など)、それを機能させるには次のコマンドを使用する必要があります。
npm test -- -t "fix order test"