J'ai quelque chose de simple comme ça.
` it("devrait appeler la promesse", async (fait) => {
const testPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Hello World!");
}, 200);
});
const result = await testPromise;
done();
}`
Mais je continue à obtenir l'erreur " Erreur : la méthode de résolution est surspécifiée. Spécifiez un rappel ou renvoyez une promesse ; pas les deux.".
Si je retire done(), le test expire.
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "ES6",
"noImplicitAny": false,
"types": ["node", "mocha","supertest"],
"typeRoots": [
"./node_modules/@types"
]
}
}
mocha.opts
--require ts-node/register
--reporter dot
--watch-extensions tsx,ts
test/**/*.ts
Lovely a trouvé comment le réparer, supprimez-le dans le paramètre de fonction et en bas et cela fonctionne. Dès que vous mettez le paramètre done en fonction, il se détraque
Gardez également à l'esprit que les fonctions async
renvoient automatiquement une promesse.
semble aussi long que vous async
, et comme l' a dit sautons donc simplement d'appeler done()
. travaux.
La suppression a fonctionné pour moi !
AVANT:
APRÈS (Fonctionne!!):
fonction getResponse :
J'ai dû supprimer le done
du paramètre de fonction et le done()
de l'appel de fonction
Avant
before(async function (done) {
user = new User({ ...});
await user.save();
done()
});
Après
before(async function () {
user = new User({ ...});
await user.save();
});
Ces travaux pour moi
J'ai le même problème, et j'ai besoin de faire l'utilisateur, car je dois tester que ma promesse échoue. Je l'attrape donc, puis j'appelle terminé, mais j'obtiens cette erreur.
it("...", async function (done) {
try {
await asyncFung(...);
done("The call should have failed")
} catch (error) {
if (error instanceof MyError) {
done()
} else {
done(error)
}
}
});
Commentaire le plus utile
Lovely a trouvé comment le réparer, supprimez-le dans le paramètre de fonction et en bas et cela fonctionne. Dès que vous mettez le paramètre done en fonction, il se détraque