我正在编写一个数据库测试(由 Mocha 运行),在保存文档后调用 findOne 并发现一个奇怪的行为:
这里的伪代码:...
test1
A.save(check('A',done));
test2
B.save(check('B',done));
test3
C.save(check('C',done));
...
check = function(name, done) {
theModel.findOne({name:name}, function(err,result) {
assert.notEqual(result,null);
result.remove(done);
});
}
然后,A 测试通过但 B 测试没有通过。我检查了日志,发现了一件奇怪的事情:首先它执行了插入,查询之后,删除之后(对于第一次测试,这就是预期的行为)。在第一次测试之后,当我看到在插入之前执行查询时我感到震惊(因此测试失败并且没有任何内容被删除)。第三个等等行为相同!在插入之前执行查询:(
因此,唯一通过的测试是第一个测试(如果我将 A 更改为 B,则 B 通过并且 A 不通过)。如果我查看 mongodb 集合,我可以看到在查询之后执行的其他插入(并且由于断言失败,它们没有被删除)
我正在使用 mongoose 2.7.2,(但我使用的是以前的版本,刚刚更新以查看它是否是已解决的错误)。帮助 :(