J'essaie d'utiliser le linter ESLint avec le framework de test Jest.
Les tests Jest s'exécutent avec certains globaux comme jest
, dont je devrai parler au linter; mais la chose délicate est la structure du répertoire, avec Jest les tests sont intégrés avec le code source dans les __tests__
dossiers, donc la structure du répertoire ressemble à quelque chose comme:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Normalement, j'aurais tous mes tests sous un seul répertoire, et je pourrais simplement y ajouter un .eslintrc
fichier pour ajouter les globaux ... mais je ne veux certainement pas ajouter un .eslintrc
fichier à chaque répertoire __test__
.
Pour l'instant, je viens d'ajouter les globaux de test au .eslintrc
fichier global , mais comme cela signifie que je pourrais désormais faire référence jest
dans du code non test, cela ne semble pas être la "bonne" solution.
Existe-t-il un moyen pour eslint d'appliquer des règles basées sur un modèle basé sur le nom du répertoire, ou quelque chose comme ça?
la source
eslint-test
fichier avec un glob, par exempleeslint **/__tests__/*.js -c eslint-test.yml
. Cela dit, je ne pense pas qu'il y ait beaucoup de danger d'unjest
oubeforeEach
code global fuite dans la production;)Réponses:
Les documents montrent que vous pouvez désormais ajouter:
À votre
.eslintrc
qui ajoutera toutes les choses liées à la plaisanterie à votre environnement, éliminant les erreurs / avertissements de linter.la source
.eslintrc
fichier qui vous étend par défaut.eslintrc
dans votre__tests__
dossier. Si vous avez le même problème que OP (plusieurs dossiers de test), vous pouvez les générer.eslintrc
avec un modèle et un petit script bash (quelque chose comme çals **/__tests/ | xargs cp templates/.eslintrc
)ESLint prend cela en charge à partir de la version> = 4:
Voici une solution de contournement (à partir d'une autre réponse ici, votez-le!) Pour la limitation "extend in overrides" de la configuration eslint:
Depuis https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
la source
"files"
et"env"
objet"overrides"
danseslint.rc
je n'ai plus à vous soucier de la syntaxe spécifique Jest passant peluchage en dehors des fichiers de test.Vous pouvez également définir le test env dans votre fichier de test comme suit:
la source
Pour compléter la réponse de Zachary, voici une solution de contournement pour la limitation "extend in overrides" de la configuration eslint:
Depuis https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
la source
Des configurations basées sur des modèles sont prévues pour la version 2.0.0 d'ESLint. Pour l'instant, cependant, vous devrez créer deux tâches distinctes (comme mentionné dans les commentaires). Un pour les tests et un pour le reste du code et exécutez les deux, tout en fournissant différents fichiers .eslintrc.
PS Il y a un environnement plaisant à venir dans la prochaine version d'ESLint, il enregistrera tous les globaux nécessaires.
la source
J'ai résolu le problème REF
Courir
Et puis ajoutez votre
.eslintrc
fichierla source
Ajouter un environnement uniquement pour le
__tests__
dossierVous pouvez ajouter un
.eslintrc.yml
fichier dans vos__tests__
dossiers, qui vous étend la configuration de base:Si vous n'avez qu'un seul
__tests__
dossier, cette solution est la meilleure, car elle ne couvre l'environnement que là où il est nécessaire.Gestion de nombreux dossiers de test
Si vous avez plus de dossiers de test (cas OPs), je suggère toujours d'ajouter ces fichiers. Et si vous avez des tonnes de ces dossiers, vous pouvez les ajouter avec un simple script zsh:
Ce script recherchera les
__tests__
dossiers et ajoutera un.eslintrc.yml
fichier avec la configuration indiquée ci-dessus. Ce script doit être lancé dans le dossier contenant votre parent.eslintrc
.la source
certaines des réponses supposent que vous avez installé «eslint-plugin-jest», mais sans avoir besoin de le faire, vous pouvez simplement le faire dans votre
.eslintrc
fichier, ajouter:la source
Dans votre fichier .eslintignore, ajoutez la valeur suivante:
Cela devrait ignorer toutes les instances du répertoire __tests__ et leurs enfants.
la source