Mocha: Obtention de l'erreur "Erreur : la méthode de résolution est surspécifiée. Spécifiez un rappel *ou* renvoyez une promesse ; pas les deux."

Créé le 15 mars 2017  ·  6Commentaires  ·  Source: mochajs/mocha

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

faq

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

Tous les 6 commentaires

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:

image

APRÈS (Fonctionne!!):

image

fonction getResponse :

image

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)
    }
  }
});
Cette page vous a été utile?
0 / 5 - 0 notes