我讀過很多關於如何模擬RavenDb的問題。有一個共同的答案:「不」嘲笑RavenDb
這使我陷入了一個奇怪的情況。嘲笑接口的最大原因之一是測試我的代碼如何對錯誤做出反應。
如果無法模擬可能導致錯誤的對象,那麼注入錯誤可能非常複雜。
我在想錯誤的方向嗎?
// lg
我讀過很多關於如何模擬RavenDb的問題。有一個共同的答案:「不」嘲笑RavenDb
這使我陷入了一個奇怪的情況。嘲笑接口的最大原因之一是測試我的代碼如何對錯誤做出反應。
如果無法模擬可能導致錯誤的對象,那麼注入錯誤可能非常複雜。
我在想錯誤的方向嗎?
// 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());
}
}}
看到這個主題,例如:http://groups.google.com/group/ravendb/browse_thread/thread/ d0d08a329dd099db/0e74ed4368a3db90?show_docid = 0e74ed4368a3db90 – 2012-04-19 19:25:01