Pour une raison quelconque, mes scripts de test mocha lancent une exception de "décrire n'est pas défini".
J'ai lu et essayé les solutions suggérées par ces questions SO mais pas de chance:
décrire n'est pas une fonction
"Mocha décrire n'est pas défini en double"
les autres liens sont:
dactylographié mocha décrire n'est pas une fonction
Ceci est mon launch.json VSCode.
{ "compilerOptions": { "experimentalDecorators": true, "strict": true, "noImplicitAny": false, "module": "commonjs", "target": "es6", "lib": [ "es6" ], "sourceMap": true, "outDir": "dist", "moduleResolution": "node", "resolveJsonModule": true, "strictNullChecks": true, "allowJs": false, "checkJs": false, "types": [ "node" ] }, "compileOnSave": true }
Ceci est mon script de test mocha:
import "mocha"; import assert = require("assert"); describe("Init", () => { before(() => { console.log("before-hook"); }); it("connected", () => { assert(true, "is not true"); }); });
Et voici mon tsconfig.json:
{ "type": "node", "request": "launch", "name": "Mocha Tests", "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", "args": [ "-u", "tdd", "--timeout", "999999", "--colors", "${workspaceRoot}/dist/tests/**/*.js" ], "outFiles": ["${workspaceFolder}/dist/tests/**/*.js"], "sourceMaps": true, "protocol": "inspector", "internalConsoleOptions": "openOnSessionStart" }
Qu'est-ce que je fais de mal ici? J'ai vraiment besoin de recommencer à utiliser le moka.
4 Réponses :
Peut-être que cela peut fonctionner en spécifiant mocha
dans les types
intérieur de tsconfig.json
npm install @types/mocha --save-dev
N'oubliez pas non plus d'installer @types/mocha
{ "compilerOptions": { ... "types": [ "node", "mocha" <--- specify here ] }, "compileOnSave": true }
J'espère que cela peut résoudre votre problème
Ajout de mocha au tableau des types dans tsconfig.json et packages.json, obtenant toujours: TypeError: mocha_1.describe n'est pas une fonction
S'il vous plaît voir mon commentaire sur le message original.
Vos fichiers de test sont-ils écrits en Javascript (vous vous référez à * .js dans votre launch.json)?
J'utilise ts-node pour déboguer les tests unitaires et me référer directement aux fichiers de test Typescript, donc mon entrée launch.json ressemble à ci-dessous. Avant d'utiliser ts-node, j'ai eu l'erreur `` décrire n'est pas définie '' lors de l'exécution à partir de VS Code.
{ "type": "node", "request": "launch", "name": "Unit tests (mocha)", "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", "args": [ "-r", "ts-node/register", "--timeout", "999999", "--colors", "${workspaceFolder}/test/**/*Test.ts", ], "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "protocol": "inspector" }
Les fichiers de test sont écrits dans Typescript.
Dan, s'il vous plaît voir mon commentaire sur la question ci-dessus.
Répondre à ma propre question ici.
J'ai résolu le problème après avoir installé Mocha 6.1.1.
Sur le launch.json, modifiez le tableau args de "tdd" à "bdd" afin que:
"-u", "bdd"
La version 5.x fonctionnait avec l'option "tdd", donc la prochaine version majeure a provoqué ce hoquet d'une configuration mal écrite.
Merci. C'était une solution simple et rapide.
Non, tu l'as juste oublié.
et en fait, dans notre cas, le style était bdd, c'est pourquoi l'option tdd ne fonctionne pas.
merci d'être revenu pour répondre à votre question. Cela m'a fait gagner beaucoup de temps.
Suppression de cette importation:
import { describe, it } from 'mocha';
Semble le réparer pour moi.
J'ai trouvé le coupable - c'était du moka. Rétrogradé à la version 5.2.0 à partir de 6+ et cela fonctionnait à nouveau. Cependant, ce n'est qu'une solution de contournement et j'ai besoin de savoir quel était vraiment le problème.