【发布时间】:2012-01-30 03:10:59
【问题描述】:
我在 In-Memory 模式下使用 RavenDB 进行单元测试。我的查询由静态索引支持。我没有使用WaitForNonStaleResults() API(我也不想)。
测试的典型工作流程是:
- 在内存模式下初始化 RavenDB
- 使用
IndexCreation.CreateIndexes(Assembly, IDocumentStore)集成索引 - 插入测试数据(用于验证查询行为)
- 运行查询
- 验证查询输出
我注意到步骤 1-3 发生得如此之快,以至于静态索引在步骤 4 之前没有时间更新 - 因此索引已经过时。
我为此创建了一个快速解决方法。在第 3 步之后,我执行:
while (documentStore.DocumentDatabase.Statistics.StaleIndexes.Length != 0)
Thread.Sleep(10);
这感觉很麻烦。我想知道的是:
- 在 In-Memory 模式下运行 RavenDB 时索引过时是否正常?
- 有没有更好的方法来避免测试期间过时的索引?
【问题讨论】:
标签: c# testing ravendb indexing