非同期テストとフックの場合は、「done()」が呼び出されることを確認します。Promiseを返す場合は、それが解決されることを確認します。質問する

非同期テストとフックの場合は、「done()」が呼び出されることを確認します。Promiseを返す場合は、それが解決されることを確認します。質問する

私は nodejs のこのテストを行っていますが、テスト時に done 関数が宣言されていないというエラーが発生します。

エラー: 2000msのタイムアウトを超えました。非同期テストとフックの場合は、「done()」が呼び出されていることを確認してください。Promiseを返す場合は、それが解決されていることを確認してください。私のテストコードでは、doneコールバックがありますが、それでもエラーが発生して呼び出します。done();

    it('remove existing subdocument', (done) => {
    const Vic = new User({
      name: 'Vic',
      posts: [{ title: 'Leaning Nodejs' }]
    });

    vic.save()
      .then(() => User.findOne({ name: 'Vic' }))
      .then((user) => {
        const post = user.posts[0];
        post.remove();
        return user.save();
      })
      .then(() => User.findOne({ name: 'Vic' }))
      .then((user) => {
        assert(user.posts.length === 0);
        done();
      });
  });

ベストアンサー1

私は、Mochaのデフォルトのタイムアウトを増やすという醜い方法を知っています。2秒から10秒--timeout 10000これは、テストスクリプトにフラグを追加することで実行できます。

パッケージ.json

 "scripts": {
    "start": "SET NODE_ENV=dev && node server.js",
    "test": "mocha --timeout 10000"
  }

おすすめ記事