What's the right way to write Jest tests verified with Flow?
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
}
}
The accepted answer does not work if you use Create-React-App. Here is how you would set up jest with CRA:
1.Install flow to your project
If you use create-reat-app, here is a guide for this step.
yarn add -D flow-bin
yarn run flow init
2. Install jest flow types
npx flow-typed install jest@22 // maybe you need a different version
(You can use npx jest -v
to check your jest version if you use create-react-app.)
3. Register flow-typed in config
(Update: as @Black points out in the comments, this step may not even be neccessary)
In your .flowconfig
, add flow-typed to libs section.
...
[libs]
flow-typed
...
I use yarn, npm should work just the same.
If you created your project with create-react-app you have to manually add jest to your packages.json. Otherwise flow-typed won't install the needed type definitions because create-react-app doesn't add this dependency to packages.json.
yarn add --dev jest
flow-typed install