私はDBテスト(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テストは合格しません。ログを確認すると、奇妙なことがわかりました。最初に挿入を実行し、クエリを実行した後、削除を実行しました(最初のテストでは、期待される動作です)。最初のテストの後、挿入の前にクエリが実行されたのを見てショックを受けました(したがって、テストは失敗し、何も削除されませんでした)。3番目以降も同じように動作します。クエリは挿入前に実行されます:(
したがって、合格する唯一のテストは最初のテストです(AをBで変更すると、Bは合格し、Aは不合格になります)。mongodbコレクションを見ると、クエリの後に実行された他の挿入を見ることができます(そして、assertが失敗したため、それらは削除されませんでした)
私はマングース2.7.2を使用しています(ただし、以前のバージョンを使用していましたが、バグが解決されたかどうかを確認するために更新されました)。ヘルプ :(