不一致的猫鼬发现行为

时间:2014-07-15 23:23:43

标签: node.js mongodb mongoose

这让我困惑了一个小时左右。我有一个像这样的测试(为了问题而编辑:

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次。但有时它会因为错误而无法找到该人而失败。即使它们刚刚创建,我已经验证它存在(只是在保存回调后直接打印)。

有什么明显的错误吗?它可能是我的测试工具代码,我创建我的测试数据库,并在每次测试后清除它吗?

1 个答案:

答案 0 :(得分:0)

嗯......解决了。

原来与上面的代码无关。每次测试后,我的测试工具都清理了数据库。它有一个错误。我决定尝试mocha-mongoose包,它完美无缺。 1000次运行后的相同测试有0个错误。以前它有大约50个错误。