私はRavenDbを模擬する方法について多くの質問を読んだ。共通の答えがあります: "しないでください"RavenDbを模擬して
これは私を奇妙な状況に置く。インターフェイスを模擬するための私の最大の理由の1つは、コードがエラーにどのように反応するかをテストすることです。
エラーの原因となるオブジェクトをモックできない場合は、エラーを注入するのは非常に複雑になることがあります。
私はここで間違った方向に考えていますか?
//lg
私はRavenDbを模擬する方法について多くの質問を読んだ。共通の答えがあります: "しないでください"RavenDbを模擬して
これは私を奇妙な状況に置く。インターフェイスを模擬するための私の最大の理由の1つは、コードがエラーにどのように反応するかをテストすることです。
エラーの原因となるオブジェクトをモックできない場合は、エラーを注入するのは非常に複雑になることがあります。
私はここで間違った方向に考えていますか?
//lg
エラーをシミュレートするにはどうすればよいですか? (EmbaddedDocumentStore
を使用して)メモリデータベースを作成し、ただを実行します。エラーをシミュレートする必要はありません。
あなたが認識している場合、私は知らないが、RavenDBは、ユニットテストのための優れたヘルパーを持っています。
あなたがしなければならない唯一のことは、以下に示すようにRavenTestBaseを実装することです:http://groups.google.com/group/ravendb/browse_thread/thread/:
[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());
}
}}
は、例えば、このスレッドを参照してください。 d0d08a329dd099db/0e74ed4368a3db90?show_docid = 0e74ed4368a3db90 –