3

RavenDb をモックする方法について多くの質問を読みました。一般的な答えがあります:「しない」

これは私を奇妙な状況に陥れます。インターフェイスをモックする最も強力な理由の 1 つは、コードがエラーにどのように反応するかをテストすることです。

エラーを引き起こす可能性のあるオブジェクトをモックできない場合、エラーを挿入するのは非常に複雑になる可能性があります。

ここで間違った方向に考えていますか????

//lg

4

2 に答える 2

8

エラーをシミュレートするためにモックを作成する必要があるのはなぜですか? EmbaddedDocumentStore( を使用して)インメモリ データベースを作成、エラーを実行するだけで、シミュレートする必要はありません。

于 2012-04-17T06:16:12.090 に答える
1

ご存じかどうかわかりませんが、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());
        }
    }}
于 2015-04-17T15:59:57.020 に答える