我正在使用內存模式下的RavenDB進行單元測試。我的查詢由靜態索引支持。我沒有使用WaitForNonStaleResults()
API(我也不想)。測試期間應該如何處理陳舊的索引?
用於試驗的典型工作流程是:
- 初始化RavenDB在內存中的模式
- 集成使用
IndexCreation.CreateIndexes(Assembly, IDocumentStore)
- 插入測試數據的索引(用於驗證查詢行爲)
- 運行查詢
- 驗證查詢輸出
我已經注意到步驟1-3發生得如此之快,靜態索引沒有時間在步驟4之前更新 - 因此索引是陳舊的。
我已經爲此創建了一個快速解決方法。執行第3步後,我執行:
while (documentStore.DocumentDatabase.Statistics.StaleIndexes.Length != 0)
Thread.Sleep(10);
這樣感覺很麻煩。我想知道的是:
- 這是正常的,在內存模式下運行時RavenDB索引過時?
- 有沒有更好的方法來避免測試過程中的陳舊索引?
@MattWarren謝謝,馬特。有用的知道。 – 2012-01-31 14:27:48
Listener方法不再適用於當前的RavenDB構建。 – nathanchere 2012-04-02 03:13:48
@FerretallicA我會再次檢查最新版本。 – 2012-04-02 08:20:38