ユニットテストのために、In-MemoryモードでRavenDBを使用しています。私のクエリは静的インデックスによってサポートされています。私はWaitForNonStaleResults()
APIを使用していません(私もしたいです)。テストのためのテスト中に失効したインデックスをどのように処理する必要がありますか?
典型的なワークフローは次のとおりです。インメモリモードで
- 初期化RavenDB
- (問合せの動作を検証するため)
IndexCreation.CreateIndexes(Assembly, IDocumentStore)
- 挿入テストデータを使用してファイル名を指定して実行クエリ をインデックスを統合します
- 照会出力の照合
私はステップ1〜3がすばやく起こっていることに気付きました。静的インデックスはステップ4より前に更新される時間がないため、インデックスが古くなります。
私はこのための迅速な回避策を作成しました。手順3の後、私は実行します:
while (documentStore.DocumentDatabase.Statistics.StaleIndexes.Length != 0)
Thread.Sleep(10);
これは面倒です。私が知りたいのは、次のとおりです。
- インメモリーモードでRavenDBを実行しているときにインデックスが古くなってすることは正常ですか?
- テスト中に失効したインデックスを回避する良い方法はありますか?
@MattWarrenありがとうございます。知っておくと便利です。 –
リスナーのアプローチは、現在のRavenDBビルドでは有効ではなくなりました。 – nathanchere
@FerretallicA最新のビルドでこれを再度確認します。 –