I am able to test multiple files using Jest, but I cannot figure out how to test a single file.
I have:
npm install jest-cli --save-dev
package.json
: `{ ... "scripts": { "test": "jest" } ... }Running npm test
works as expected (currently it runs 14 tests).
How do I test a single file, e.g. test app/foo/__tests__/bar.spec.js
?
I have tried running npm test app/foo/__tests__/bar.spec.js
(from the project root), but I get the following error:
npm ERR! Error: ENOENT, open '/node_modules/app/foo/tests/bar.spec.js/package.json'
In order to run a specific test, you'll need to use the jest command. npm test will not work. To access jest directly on the command line, install it via npm i -g jest-cli or yarn global add jest-cli . Then simply run your specific test with jest bar.
To run Jest tests only for current folder, we can run jest with the path of the folder with the tests we want to run. to run the tests in the dev/app folder given that the test script runs jest . We can also set the testPathPattern option to the folder with the tests we want to run. to run the tests in dev/app .
Jest will look for test files with any of the following popular naming conventions: Files with . js suffix in __tests__ folders. Files with .
npm test -- bar.spec.js
In order to run a specific test, you'll need to use the jest
command. npm test
will not work. To access jest
directly on the command line, install it via npm i -g jest-cli
or yarn global add jest-cli
.
Then simply run your specific test with jest bar.spec.js
.
Note: You don't have to enter the full path to your test file. The argument is interpreted as a regular expression. Any part of the full path that uniquely identifies a file suffices.
All you have to do is chant the magic incantation:
npm test -- SomeTestFileToRun
The stand-alone --
is *nix magic for marking the end of options, meaning (for NPM) that everything after that is passed to the command being run, in this case jest
. As an aside, you can display Jest usage notes by saying
npm test -- --help
Anyhow, chanting
npm test -- Foo
runs the tests in the named file (FooBar.js
). You should note, though, that:
Jest treats the name as case-sensitive, so if you're using a case-insensitive, but case-preserving file system (like Windows NTFS), you might encounter what appears to be oddness going on.
Jest appears to treat the specification as a prefix.
So the above incantation will
FooBar.js
, Foo.js
and FooZilla.js
foo.js
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With