web-dev-qa-db-fra.com

Comment résoudre TypeError: environment.teardown n'est pas une fonction?

je ne peux pas tester l'application créée avec create-react-app, tous les guides indiquent que le test fonctionne par défaut, mais lorsque j'essaie "test de fil", il nécessite l'installation de "jest-cli" et après l'installation, une erreur "TypeError: environment. le démontage n'est pas une fonction ". 

4
discovery one

Vous ne devriez pas avoir à installer jest-cli vous-même, il devrait sortir de la boîte. 

Essayez ce qui suit:

  1. Supprimer package-lock.json, yarn.lock et node_modules
  2. Supprimer la plaisanterie des dépendances dans package.json
  3. Ensuite, npm install et yarn install.
17
MstrQKN

Dans mon cas, cette erreur est générée car je crée mon projet de réaction à l'aide de create-react-app et installe jest. D'une certaine manière, cela entre en conflit.

Je le résous en supprimant jest de mon projet et en utilisant le script de test create-react-app.

1
Raul F. de Melo

Ajoutez une nouvelle version de "jest-environment-jsdom" à "package.json".

1
denisx

Après une soirée à me cogner la tête, je pense que je l’ai enfin résolu. Tout d’abord, laissez-moi décrire le problème:

Je devenais aussi:

TypeError: environment.teardown is not a function

Parce que j'essayais de mettre Jest à niveau avec la dernière version. Lorsque vous démarrez une application avec Create-React-App, elle installe une version antérieure de jest qui n'inclut pas toutes les fonctionnalités. L’utilisation de la fonctionnalité inlineSnapshots, qui vous permet d’affirmer les composants rendus par rapport au balisage HTML dans votre fichier de test, m’intéressait.

Il y a quelques éléments non inclus dans la documentation de Create-React-App ou de plaisanterie dont vous devez être au courant. Si vous souhaitez utiliser de nouvelles fonctionnalités Jest, telles que inlineSnapshots, procédez comme suit:

  • fil ajouter une nouvelle version de jest et jest-environment-jsdom
  • yarn add prettier --dev (pour faciliter la réécriture dans le fichier source.)
  • Ajoutez un docblock jest env au sommet de chaque script de test.

Un docblock est un commentaire de bloc JS avec une marque pragma "@". Pour définir l’environnement jest, vous devez ajouter ceci en haut de chaque fichier de test:

/**
 * @jest-environment jsdom
 */

Cela demande à plaisanter d'exécuter le test dans l'environnement jsdom, ce qui doit correspondre à ce qui est transmis dans la section des scripts de test de votre package.json. Le mien ressemble à ceci (ignorez les parties avec react-app-rewired):

   "scripts": {
      "start": "yarn run flow && react-app-rewired start",
      "build": "yarn run flow && react-app-rewired build",
      "test": "react-scripts test --env=jsdom"
   }

Après tout cela, j'ai finalement réussi à faire fonctionner inlineSnapshots.

1
Cliff

Pour moi, c'était la liaison d'importation de module. Pour moi, il s’agissait essentiellement de la liaison export/import du module. 

Fondamentalement, s'il a été exporté à l'aide de module.export, vous devez importer à l'aide de require. S'il a été exporté à l'aide de export ou export default, vous devez importer à l'aide de import.

Aucun mélange n'est autorisé ici.

0
somenickname