Saya punya sesuatu yang sederhana seperti ini.
` it("harus memanggil janji", async (selesai) => {
const testPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Hello World!");
}, 200);
});
const result = await testPromise;
done();
}`
Tapi saya terus mendapatkan error " Error: Resolution method is overspecified. Specify a callback or return a Promise; not both.".
Jika saya mengambil done() maka waktu tes habis.
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
indah menemukan cara memperbaikinya, hapus selesai di param fungsi dan di bagian bawah dan berfungsi. Segera setelah Anda memasukkan parameter fungsi selesai, itu menjadi kacau
Perlu diingat juga bahwa fungsi async
secara otomatis mengembalikan janji.
tampaknya selama Anda async
, dan seperti yang dikatakan @ScottFreeCode , itu mengembalikan janji, jadi kita lewati panggilan done()
. bekerja.
Menghapus selesai berhasil untuk saya!
SEBELUM:
SETELAH (Bekerja!!):
fungsi getResponse:
Saya harus menghapus done
dari parameter fungsi dan done()
dari panggilan fungsi
Sebelum
before(async function (done) {
user = new User({ ...});
await user.save();
done()
});
Setelah
before(async function () {
user = new User({ ...});
await user.save();
});
Ini bekerja untuk saya
Saya mengalami masalah yang sama, dan saya harus menyelesaikan pengguna, karena saya perlu menguji bahwa janji saya gagal. Jadi saya menangkapnya, dan kemudian menelepon selesai, tetapi mendapatkan kesalahan ini.
it("...", async function (done) {
try {
await asyncFung(...);
done("The call should have failed")
} catch (error) {
if (error instanceof MyError) {
done()
} else {
done(error)
}
}
});
Komentar yang paling membantu
indah menemukan cara memperbaikinya, hapus selesai di param fungsi dan di bagian bawah dan berfungsi. Segera setelah Anda memasukkan parameter fungsi selesai, itu menjadi kacau