I imagine people commonly use Flow and Jest (and React) together, but Flow doesn't seem to know about Jest (or Jasmine) globals. When I add // @flow
to my tests, I get Flow errors like this:
src/__tests__/Thing-test.js:3 3: jest.unmock('../Thing') ^^^^ identifier `jest`. Could not resolve name src/__tests__/Thing-test.js:7 7: describe('Thing', () => { ^^^^^^^^ identifier `describe`. Could not resolve name src/__tests__/Thing-test.js:8 8: it('does stuff', () => { ^^ identifier `it`. Could not resolve name
I could write a Flow interface for Jest/Jasmine, but that seems lengthy and like I must be missing something. Letting Flow process node_modules/jest-cli
doesn't seem to help.
To create a test case in Jest we use the test() function. It takes a test name string and handler function as the first two arguments. The test() function can also be called under the alias - it() .
If you want to run files in sequence as well, run Jest with the --runInBand command line flag. ( -i does the same thing.) Doing this, the scheduler might still run them in a different order from run to run. To prevent this as well, you will need to define your own test sequencer.
Jest is a JavaScript test runner, that is, a JavaScript library for creating, running, and structuring tests. Jest ships as an NPM package, you can install it in any JavaScript project. Jest is one of the most popular test runner these days, and the default choice for React projects.
Jest provides beforeAll and afterAll . As with test / it it will wait for a promise to resolve, if the function returns a promise. beforeAll(() => { return new Promise(resolve => { // Asynchronous task // ...
Although Jest is written with flow annotations they strip types for the npm version so we don't need babel to run it. Fortunately the types are already in flow-type so the solution is quite easy (just as mentioned in the comment):
npm install -g flow-typed flow-typed install [email protected] # <-- replace the version with the latest
Although I had to add this line as well to my .eslintrc.json
:
{ "env": { "jest": true } }
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