web-dev-qa-db-fra.com

Comment déplacer des tests Jest dans un dossier / test et les faire fonctionner?

Jest s'attend à ce que les tests soient dans le dossier __tests__ ou soient nommés blah.test.js. Je n'aime aucun de ces modèles. Je veux que mes fichiers de test soient dans /test et en les nommant test/index.ios.test.js semble redondant et idiot. Mon premier coup à ceci est de changer ma configuration de plaisanterie dans package.json pour être:

"jest": {
    "testPathDirs": ["test"],
    "testRegex": "\\.(js|jsx)$",
    "preset": "react-native"
}

Qui trouvent les tests réussis mais échouent tous:

Cannot find module 'setupDevtools' from 'setup.js'

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:151:17)
  at Object.<anonymous> (node_modules/react-native/jest/setup.js:23:1)

Cette fonction est dans node_modules/react-native/Libraries/Core/Devtools/setupDevtools.js. Comment dire à Jest où le trouver?

14
jcollum

J'ai résolu le problème en définissant simplement l'expression régulière afin qu'elle trouve tout .js fichiers dans mon ./test dossier:

"jest": {
   "preset": "react-native",
    "globals": {
        "__DEV__": true
    },
    "testRegex": "./test/.*.js$",
    "rootDir": "."
 },

(jcollum ici: je ne sais pas quoi __DEV__ est en train de le faire mais une erreur sera lancée si ce n'est pas le cas. plaisanterie 17.0.3)

13
Andreas Köberle

Je pense que la meilleure façon de procéder est de configurer testMatch . Il est par défaut:

[ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]

Vous pouvez donc soit changer __tests__ à tests ou ajoutez une nouvelle entrée dans le tableau qui vérifie les deux. Mon utilisation de ce qui suit dans mon package.json:

  "jest": {
    "testMatch": [ "**/tests/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]
  },
4
Jiert