Mocha: Mendapatkan kesalahan "Kesalahan: Metode resolusi terlalu ditentukan. Tentukan panggilan balik *atau* kembalikan Janji; bukan keduanya."

Dibuat pada 15 Mar 2017  ·  6Komentar  ·  Sumber: mochajs/mocha

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

faq

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

Semua 6 komentar

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:

image

SETELAH (Bekerja!!):

image

fungsi getResponse:

image

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)
    }
  }
});
Apakah halaman ini membantu?
0 / 5 - 0 peringkat