Lors de l'utilisation de TypeScript avec Jest, mes spécifications échouaient avec des messages d'erreur comme:
test/unit/some.spec.ts:1:1 - error TS2582: Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
test/unit/some.spec.ts:2:3 - error TS2582: Cannot find name 'it'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
test/unit/some.spec.ts:3:7 - error TS2304: Cannot find name 'expect'.
test/unit/some.spec.ts:7:1 - error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
Les types sont déjà installés.
J'utilise:
"@types/jest": "^23.3.12",
"jest": "^23.6.0",
"ts-jest": "^23.10.5",
"TypeScript": "^3.1.6"
Je lance des tests en utilisant jest --forceExit --coverage --verbose
Dans mon cas, le problème était dans un fichier particulier. Je n'avais pas trouvé le problème lui-même, mais il a été résolu en ajoutant import {} from 'jest'
aux importations du fichier.
Aucun autre moyen de jest issue tracker ou SO ou où n'a pas aidé. Juste un bug fou corrigé par une solution folle ???? ♂️
Oui, et j'ai ajouté la dernière jest
, ts-jest
et @types/jest
à package.json bien sûr
Liste de contrôle simple pour résoudre ce problème (pour TypeScript et Jest).
@types/jest
et @types/node
installée.tsconfig.json
pour que: types: ["jest", "node"]
tsconfig.json
configuration dans la propriété excluded
.Vous pouvez avoir un tsconfig.json
dans le dossier de test __tests__
:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"baseUrl": "./",
"outDir": "../build",
"noEmit": true,
"rootDir": "../",
},
"exclude": ["node_modules"],
}
qui étend celui du dossier racine:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "./lib",
"rootDir": "./src",
"strict": true,
"noImplicitAny": true,
"esModuleInterop": true,
},
"exclude": ["node_modules", "**/*.test.ts", "__tests__"]
}
De cette façon, vous testez les fichiers toujours exclus de la version publique, mais vous pouvez toujours partager toutes les options courantes.