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
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:
DEPOIS (funciona !!):
função getResponse:
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)
}
}
});
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