Mocha: Aparece el error "Error: el método de resolución está sobreespecificado. Especifique una devolución de llamada * o * devuelva una Promesa; no ambas".

Creado en 15 mar. 2017  ·  6Comentarios  ·  Fuente: mochajs/mocha

Tengo algo tan simple como esto.

`it (" debería llamar a la promesa ", async (done) => {

    const testPromise = new Promise((resolve, reject) => {

        setTimeout(() => {

            resolve("Hello World!");

        }, 200);
    });


    const result = await testPromise;

    done();

} `

Pero sigo recibiendo el error "Error: el método de resolución está sobreespecificado. Especifique una devolución de llamada o devuelva una Promesa; no ambos".

Si saco done (), la prueba se agota.

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

Comentario más útil

Lovely encontró cómo solucionarlo eliminar hecho en el parámetro de función y en la parte inferior y funciona. Tan pronto como pones el parámetro hecho en función, se vuelve loco

Todos 6 comentarios

Lovely encontró cómo solucionarlo eliminar hecho en el parámetro de función y en la parte inferior y funciona. Tan pronto como pones el parámetro hecho en función, se vuelve loco

Tenga en cuenta también que las funciones async devuelven automáticamente una promesa.

parece tan largo como usted async , y como dijo @ScottFreeCode , devuelve una promesa, por lo que simplemente omitimos llamar a done() . obras.

¡Eliminar hecho funcionó para mí!

ANTES DE:

image

¡¡Después del trabajo!!):

image

Función getResponse:

image

Tuve que eliminar el done del parámetro de la función y el done() de la llamada a la función
Antes

   before(async function (done) {
        user = new User({ ...});
        await user.save();
        done()
    });

Después

   before(async function () {
        user = new User({ ...});
        await user.save();
    });

Esto funciona para mi

Estoy teniendo el mismo problema, y ​​necesito que el usuario termine, porque necesito probar que mi promesa falla. Entonces lo atrapo, y luego llamo listo, pero obtengo este error.

it("...", async function (done) {
  try {
    await asyncFung(...);
    done("The call should have failed")
  } catch (error) {
    if (error instanceof MyError) {
      done()
    } else {
      done(error)
    }
  }
});
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

3p3r picture 3p3r  ·  3Comentarios

robertherber picture robertherber  ·  3Comentarios

niftylettuce picture niftylettuce  ·  3Comentarios

danielserrao picture danielserrao  ·  3Comentarios

eschwartz picture eschwartz  ·  3Comentarios