RavenDb をモックする方法について多くの質問を読みました。一般的な答えがあります:「しない」
これは私を奇妙な状況に陥れます。インターフェイスをモックする最も強力な理由の 1 つは、コードがエラーにどのように反応するかをテストすることです。
エラーを引き起こす可能性のあるオブジェクトをモックできない場合、エラーを挿入するのは非常に複雑になる可能性があります。
ここで間違った方向に考えていますか????
//lg
エラーをシミュレートするためにモックを作成する必要があるのはなぜですか? EmbaddedDocumentStore
( を使用して)インメモリ データベースを作成し、エラーを実行するだけで、シミュレートする必要はありません。
ご存じかどうかわかりませんが、RavenDBには単体テスト用の優れたヘルパーがあります。
必要な作業は、以下に示すように RavenTestBase を実装することだけです。
[TestFixture]
public class RavenDummyTests : RavenTestBase
{
private IDocumentStore _documentStore;
[SetUp]
public void Setup()
{
_documentStore = NewDocumentStore();
}
[TestFixtureTearDown]
public void TestFixtureTearDown()
{
_documentStore.Dispose();
}
[Test]
public void Search_And_Where_Result_In_An_And()
{
using (var db = _documentStore.OpenSession())
{
db.Store(_oscar);
db.Store(_max);
db.Store(_tiger);
db.SaveChanges();
}
WaitForIndexing(_documentStore); // <== very helpful
using (var db = _documentStore.OpenSession())
{
var query = db.Query<Cat>().Search(cat => cat.Color, "gray").Where(cat => cat.Name == "max");
var list = query.ToList();
Assert.IsEmpty(list);
Assert.AreEqual("Color:(gray) AND (Name:max)", query.ToString());
}
}}