私のExpress
サーバーのルートをSupertest
でテストしたいと思います。そのルートでは、私はMongoDB
からデータのリストを取得し、そのデータはであり、updatedAtフィールドでソートされています。MongoDB文書を同じ更新タイムスタンプでソートする?
出力の順序が正しいかどうかをテストしたいが、問題がある - mongoDbが非常に高速で、一部のドキュメントが同じタイムスタンプを持つように思える(可能だとは思わなかった) 。これは内部的にソートされている方法
? _idでもソートされていないようです。私のテストでドキュメントを生成する関数は以下の通りです。
let first;
let last;
Array.from(Array(14)).forEach((e, i) => {
const immo = new Immo({ user: this.user.model });
immo.save();
if (i === 2) {
// last means last with limit 12 sorted by timestamps descending
last = immo._id.toString();
}
if (i === 13) {
// the last that was put in will be the first in the sorted list
first = immo._id.toString();
}
});
出力は、ユーザーが編集した最後の12項目です。私は最初と最後を保存するので、後でテストでそれらをアサートすることができます。
しかし、同じタイムスタンプを持つ3つまたは4つのテストがあり、Mongoがタイムスタンプ(または最初にそれをソートするとき)の最後のものではないので、テストは失敗します。降順で)。
私は入力ループでforループ経由で遅延を試みましたが、何もしませんでした。 (Array.forEachを使用しないとよいでしょうか)
文書の間に少なくともMS遅延があることを確認する方法はありますか?