web-dev-qa-db-fra.com

Empêcher les erreurs "test / attendre / etc n'est pas défini" lors de l'utilisation de Jest

Le framework de test Jest de Facebook est facile à commencer avec, mais la documentation ignore un aspect ennuyeux : les instructions de test seront mises en évidence comme des erreurs par tout éditeur qui essaie d'avertir des symboles non définis , car test, expect et toutes les méthodes de correspondance ne sont pas définies.

WebStorm highlights errors in Jest test file

De même, la tentative d'exécution directe d'un fichier de test avec node échouera avec ReferenceError: test is not defined.

Quelles instructions require/import doivent être ajoutées pour que ces erreurs disparaissent?

17
Dan Dascalescu

Node

Si vous souhaitez les exécuter directement via le nœud, essayez de exiger jest et/ou jest-runtime. Donnez également @types/jest un essai aussi.

Vérifiez Edit 2 pour de nouvelles informations à ce sujet

Modifier

@types/jest (jest-DefinitelyTyped) est absolument nécessaire (ou juste une solution). Si vous l'installez (par exemple, la dépendance des développeurs), les erreurs IDE devraient disparaître. Je viens de l'essayer sur Webstorm, et ça marche.

Modifier 2

Les nouveaux Jest @ 20 Matchers (par exemple, .resolves et .rejects) ne sont toujours pas définis dans @types/jest. Vous pouvez suivre son statut sur les liens ci-dessous: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/16645https://github.com/DefinitelyTyped/DefinitelyTyped/ problèmes/168

Il devrait cependant être disponible bientôt!

De plus, il ne semble pas possible de l'exécuter directement via le nœud. Hier soir, j'ai essayé un tas de choses différentes, mais utiliser la plaisanterie est la voie à suivre - il utilise vraiment le nœud sous le capot , donc je pensais que ce serait être possible aussi. @ thymikee sur votre problème ouvert sur GitHub a clairement indiqué que ce n'était pas le cas.

Modifier 3

La nouvelle version ( 20.0.1 ) inclut les dernières définitions Jest.

Peluche

ce n'est pas dans l'étendue de ce problème spécifique, mais ça aide aussi

Utilisez-vous quelque chose comme ESLint ? Si oui, vous aurez besoin de eslint-plugin-jest

En suivant les étapes décrites dans cette page: https://www.npmjs.com/package/eslint-plugin-jest , vous devrez essentiellement l'ajouter en tant que plugin ESLint et définir des globaux de plaisanterie dans le Configuration ESLint:

{
  "env": {
    "jest/globals": true
  }
}

Si vous prévoyez de prendre en charge les tests ES6 , vous aurez également besoin de Babel et babel-jest plugin avec la configuration jest suivante:

"transform": {
  "^.+\\.js$": "babel-jest"
}

Enfin, pour les tests TypeScript , vous auriez besoin du @types/jest et ts-jest packages aussi

23
Apidcloud

J'utilise VSCode et ESLint, vous devez installer eslint-plugin-jest

Ajoutez des informations sur votre .eslintrc.js

{
  "plugins": ["jest"]
},
"env": {
  "jest/globals": true
}
14
onmyway133

L'ajout de la configuration .eslintrc suivante suffit

{"env": 
  {
    "jest": true
  }
}
1
Akshay Vijay Jain