Mocha: 「エラー:解決メソッドが過剰に指定されています。コールバックを指定するか、またはPromiseを返します。両方ではありません。」というエラーが発生します。

作成日 2017年03月15日  ·  6コメント  ·  ソース: mochajs/mocha

私はこのような単純なものを持っています。

`it(" promiseを呼び出す必要があります "、async(done)=> {

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

        setTimeout(() => {

            resolve("Hello World!");

        }, 200);
    });


    const result = await testPromise;

    done();

} `

しかし、「エラー:解決メソッドが過剰に指定されています。コールバックを指定する、Promiseを返します。両方ではありません。」というエラーが発生し続けます。

done()を取り出すと、テストがタイムアウトします。

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

最も参考になるコメント

素敵なそれを修正する方法を見つけました関数パラメータと下部で行われた削除を削除し、それは動作します。 完了を関数パラメータに入れるとすぐに、それはヘイワイヤーになります

全てのコメント6件

素敵なそれを修正する方法を見つけました関数パラメータと下部で行われた削除を削除し、それは動作します。 完了を関数パラメータに入れるとすぐに、それはヘイワイヤーになります

async関数は自動的にpromiseを返すことにも注意してください。

asyncである限り、 @ ScottFreeCodeが言ったように、promiseが返されるので、 done()呼び出しをスキップします。 動作します。

完了した削除は私のために働いた!

前:

image

後(作品!!):

image

getResponse関数:

image

関数パラメーターからdoneを削除し、関数呼び出しのdone()を削除する必要がありました

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

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

これらは私のために働きます

私は同じ問題を抱えており、約束が失敗することをテストする必要があるため、ユーザーが行う必要があります。 だから私はそれをキャッチし、それから完了を呼び出しますが、このエラーが発生します。

it("...", async function (done) {
  try {
    await asyncFung(...);
    done("The call should have failed")
  } catch (error) {
    if (error instanceof MyError) {
      done()
    } else {
      done(error)
    }
  }
});
このページは役に立ちましたか?
0 / 5 - 0 評価