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 ".
Vous ne devriez pas avoir à installer jest-cli vous-même, il devrait sortir de la boîte.
Essayez ce qui suit:
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
.
Ajoutez une nouvelle version de "jest-environment-jsdom" à "package.json".
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:
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.
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.