Я застрял на пару часов с настройкой асинхронных тестов, и я думаю, что документацию нужно обновить. В документации можно найти следующий код:
describe('#find()', function(){
it('respond with matching records', function(done){
db.find({ type: 'User' }, function(err, res){
if (err) return done(err);
res.should.have.length(3);
done();
})
})
})
Утверждение здесь приведет к сбою Mocha, потому что AssertionError не будет перехвачен. Он должен быть заключен в оператор try-catch, было бы хорошо, если бы это было указано в официальной документации :)
Только что протестировал пример с недавним mongodb, should и mocha. Работает нормально. Если вы настаиваете, откройте этот вопрос еще раз, но предоставьте подробную информацию о вашем конкретном случае.
Я вижу что-то подобное - тайм-аут мокко попадает, поскольку AssertionError, похоже, пойман mongo: https://github.com/mongodb/node-mongodb-native/blob/V1.3.19/lib/mongodb /connection/base.js#L384
Фреймы стека:
Base._callHandler (), base.js: 384
Server.connect.connectionPool.on.server._serverState (), server.js: 472
MongoReply.parseBody (), mongo_reply.js: 68.
Server.connect.connectionPool.on.server._serverState (), server.js: 430
Мне не удалось создать простой тестовый пример - все они работали нормально.
Однако я нашел обходной путь - оберните ваши утверждения в process.nextTick ().
Я перешел на
хм мокко должен ловить тех, у кого uncaughtException, и сопоставлять их с правильным тестовым примером