Mocha: Obtendo o erro "Erro: o método de resolução está especificado demais. Especifique um retorno de chamada * ou * retorne uma promessa; não ambos."

Criado em 15 mar. 2017  ·  6Comentários  ·  Fonte: mochajs/mocha

Eu tenho algo simples como isso.

`it (" deve chamar a promessa ", assíncrono (feito) => {

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

        setTimeout(() => {

            resolve("Hello World!");

        }, 200);
    });


    const result = await testPromise;

    done();

} `

Mas continuo recebendo o erro "Erro: o método de resolução está especificado demais. Especifique um retorno de chamada ou retorne uma promessa; não ambos.".

Se eu remover done (), o tempo do teste se esgota.

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

Comentários muito úteis

adorável descobri como corrigi-lo remover feito no parâmetro de função e na parte inferior e funciona. Assim que você coloca o parâmetro de função done, ele fica maluco

Todos 6 comentários

adorável descobri como corrigi-lo remover feito no parâmetro de função e na parte inferior e funciona. Assim que você coloca o parâmetro de função done, ele fica maluco

Lembre-se também de que as funções async retornam automaticamente uma promessa.

parece contanto que você async , e como @ScottFreeCode disse, ele retorna uma promessa, então simplesmente pulamos a chamada de done() . trabalho.

Remover feito funcionou para mim!

ANTES:

image

DEPOIS (funciona !!):

image

função getResponse:

image

Tive que remover done do parâmetro de função e done() da chamada de função
Antes

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

Depois de

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

Isso funciona para mim

Estou tendo o mesmo problema, e preciso fazer o usuário, pois preciso testar se minha promessa falha. Então, eu pego e chamo de concluído, mas recebo esse erro.

it("...", async function (done) {
  try {
    await asyncFung(...);
    done("The call should have failed")
  } catch (error) {
    if (error instanceof MyError) {
      done()
    } else {
      done(error)
    }
  }
});
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Swivelgames picture Swivelgames  ·  3Comentários

helloravi picture helloravi  ·  3Comentários

robertherber picture robertherber  ·  3Comentários

jamietre picture jamietre  ·  3Comentários

adamhooper picture adamhooper  ·  3Comentários