这让我困惑了一个小时左右。我有一个像这样的测试(为了问题而编辑:
var person = new Person({
display_name: "Dom"
})
person.saveQ()
.then(function(savedPerson) {
var incident = {
logger: {
logger_id: savedPerson._id
}
}
return request(app).post('/incidents')
.send(incident)
})
.then(function(res) {
console.log(res.body)
should.exist(res.body._id)
})
.done(done);
我创建了一个人,然后创建了一个事件,将logger_id设置为刚刚创建的人员ID。
我的实际请求处理程序(编辑到最小可能失败的情况),如下所示:
Person.findById(req.params.logger.logger_id, function(err, person) {
if (!person) {
return next(new restify.ResourceNotFoundError("Person with id " + req.params.logger.logger_id + " not found."))
}
return next(res.json(201, person))
})
即。我通过logger_id传递了最近创建的人物。如果它不存在,我会抛出一个错误。
现在......这种情况正常并且如预期的那样9/10次。但有时它会因为错误而无法找到该人而失败。即使它们刚刚创建,我已经验证它存在(只是在保存回调后直接打印)。
有什么明显的错误吗?它可能是我的测试工具代码,我创建我的测试数据库,并在每次测试后清除它吗?
答案 0 :(得分:0)
嗯......解决了。
原来与上面的代码无关。每次测试后,我的测试工具都清理了数据库。它有一个错误。我决定尝试mocha-mongoose包,它完美无缺。 1000次运行后的相同测试有0个错误。以前它有大约50个错误。