Мокко: Ошибка: превышено время ожидания 2000 мс. Для асин c тестов и хуков убедитесь, что вызывается «done ()»; если возвращаете обещание, убедитесь, что оно разрешается - PullRequest
0 голосов
/ 26 января 2020

Этот код:

const mongoose=require('mongoose');

mongoose.connect('mongodb://localhost/users_test',{useNewUrlParser:true});

mongoose.connection
    .once('open',()=>console.log('Good to go!'))
    .on('error',(error)=>{
        console.log('Warning',error);
    })

beforeEach((done)=>{
    mongoose.connection.collections.users.drop(()=>{
        done();
    })
})

приводит к ошибке: превышено время ожидания 2000 мс. Для асин c тестов и хуков убедитесь, что вызывается «done ()»; если вы возвращаете обещание, убедитесь, что оно разрешено.

Кто-нибудь знает, почему? Насколько я могу судить, mon goose .connection.collections.users.drop (() => {done ();}) должен вызывать done () почти мгновенно.

1 Ответ

0 голосов
/ 26 января 2020

Вы можете увеличить время ожидания тестов Mocha, поскольку mongoose.connection.collections является асинхронной c функцией, а network call может занять больше времени, чтобы завершить sh.

Пример.


const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/users_test", { useNewUrlParser: true });

mongoose.connection
  .once("open", () => console.log("Good to go!"))
  .on("error", error => {
    console.log("Warning", error);
  });

describe("something", function() {
  this.timeout(5000);
  beforeEach(done => {
    mongoose.connection.collections.users.drop(() => {
      done();
    });
  });
  // tests...
});

...