id | title | layout | category | permalink | next |
---|---|---|---|---|---|
troubleshooting |
Troubleshooting |
docs |
Reference |
docs/troubleshooting.html |
mock-functions |
Uh oh, something went wrong? Use this guide to resolve issues with Jest.
Try using the debugger built into >= Node 6.3.
Place a debugger;
statement in any of your tests, and then, in your project's directory, run:
node --debug-brk --inspect ./node_modules/.bin/jest -i [any other arguments here]
This will output a link that you can open in Chrome. After opening that link, the Chrome Developer Tools will be displayed, and a breakpoint will be set at the first line of the Jest CLI script (this is done simply to give you time to open the developer tools and to prevent Jest from executing before you have time to do so). Click the button that looks like a "play" button in the upper right hand side of the screen to continue execution. When Jest executes the test that contains the debugger
statement, execution will pause and you can examine the current scope and call stack.
Note: the -i
cli option makes sure Jest runs test in the same process rather than spawning processes for individual tests. Normally Jest parallelizes test runs across processes but it is hard to debug many processes at the same time.
More information on the V8 inspector can be found here: https://nodejs.org/api/debugger.html#debugger_v8_inspector_integration_for_node_js
The preprocessor script was changed or babel was updated and the changes aren't being recognized by Jest?
Retry with --no-cache
.
Explanation: Jest caches transformed module files to speed up test execution.
If you are using your own custom preprocessor, consider adding a getCacheKey
function to it: getCacheKey in Relay.
If a promise doesn't resolve at all, this error might be thrown:
- Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.`
Most commonly this is being caused by conflicting Promise implementations.
Consider replacing the global promise implementation with your own, for example
global.Promise = require.requireActual('promise');
and/or consolidate the
used Promise libraries to a single one.
If your test is long running, you may want to consider to increase the timeout
specified in jasmine.DEFAULT_TIMEOUT_INTERVAL
.
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; // 10 second timeout
Try running Jest with --no-watchman
or set the watchman
configuration option
to false
.
Also see watchman troubleshooting.
Upgrade jest-cli
to 0.9.0
or above.
Upgrade jest-cli
to 0.9.0
or above.
Explanation:
jest.dontMock('foo');
import foo from './foo';
In ES2015, import statements get hoisted before all other
var foo = require('foo');
jest.dontMock('foo'); // Oops!
In Jest 0.9.0, a new API jest.unmock
was introduced. Together with a plugin
for babel, this will now work properly when using babel-jest
:
jest.unmock('foo'); // Use unmock!
import foo from './foo';
// foo is not mocked!
See the Getting Started guide on how to enable babel support.
Jest is now using Jasmine 2 by default. It should be easy to upgrade using the Jasmine upgrade guide.
If you would like to continue using Jasmine 1, set the testRunner
config
option to jasmine1
or pass --testRunner=jasmine1
as a command line option.
Jest takes advantage of new features added to Node 4. We recommend that you
upgrade to the latest stable release of Node. The minimum supported version is
v4.0.0
. Versions 0.x.x
are not supported.
See Support.