J'imagine que les gens utilisent couramment Flow et Jest (et React) ensemble, mais Flow ne semble pas connaître les globaux Jest (ou Jasmine). Lorsque j'ajoute // @flow
à mes tests, j'obtiens des erreurs de flux comme ceci:
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
Je pourrais écrire une interface Flow pour Jest/Jasmine, mais cela semble long et comme je dois manquer quelque chose. Laisser le processus de flux node_modules/jest-cli
ne semble pas aider.
Bien que Jest soit écrit avec des annotations de flux, ils suppriment les types pour la version npm, nous n'avons donc pas besoin de babel pour l'exécuter. Heureusement, les types sont déjà dans type de flux donc la solution est assez facile (comme mentionné dans le commentaire):
npm install -g flow-typed
flow-typed install [email protected] # <-- replace the version with the latest
Bien que je devais également ajouter cette ligne à mon .eslintrc.json
:
{
"env": {
"jest": true
}
}
La réponse acceptée ne fonctionne pas si vous utilisez Create-React-App . Voici comment mettre en place une plaisanterie avec CRA:
1.Installez le flux dans votre projet
Si vous utilisez create-reat-app, ici est un guide pour cette étape.
yarn add -D flow-bin
yarn run flow init
2. Installer les types de flux Jest
npx flow-typed install jest@22 // maybe you need a different version
(Vous pouvez utiliser npx jest -v
pour vérifier votre version plaisanterie si vous utilisez create-react-app.)
3. Enregistrez le type de flux dans config
(Mise à jour: comme le souligne @Black dans les commentaires, cette étape n'est peut-être même pas nécessaire)
Dans votre .flowconfig
, ajoutez le type de flux à la section libs.
...
[libs]
flow-typed
...
J'utilise du fil, npm devrait fonctionner de la même façon.
Si vous avez créé votre projet avec create-react-app, vous devez ajouter manuellement jest à votre packages.json. Sinon, le type de flux n'installera pas les définitions de type nécessaires car create-react-app n'ajoute pas cette dépendance à packages.json.
yarn add --dev jest
flow-typed install
Je pense declare var jest: any;
devrait faire l'affaire (placez-le soit au-dessus de chaque fichier de test, soit quelque part dans votre répertoire lib de flux).
Vous pouvez également l'exécuter en une seule ligne. Voici:
npm i -D flow-typed && npx flow-typed install jest@"$(npx jest -v)"