用Raven Db进行边界测试

时间:2014-12-23 18:30:33

标签: c# testing asp.net-web-api ravendb

我正在使用Web API和Raven DB构建系统。

我正在针对该系统的外部边界编写集成测试。

public void GetAfterPostingPollReturnsPoll()
{
    using (var client = HttpClientFactory.Create())
    {
        var poll = new
        {
            Question = "What is the answer?",
            Options = new[] { "Yes", "No", "Maybe" }
        };
        var postResponse = client.PostAsJsonAsync("", poll).Result;
        var pollLocation = postResponse.Headers.Location;
        var getResponse = client.GetAsync(pollLocation).Result;
        var actual = JsonConvert.DeserializeObject<Poll>(
            getResponse.Content
                .ReadAsStringAsync()
                .Result);
        Assert.Equal(poll.Question, actual.Question);
        Assert.Equal(poll.Options, actual.Options);
    }
}

当我提交参赛作品时,Controller会与DocumentStore互动,因为这就是它在制作中的作用。

我遇到的麻烦是测试中产生的数据永远不会被清除。

根据我一直在阅读的内容,我应该使用EmbeddableDocumentStore进行验收测试。

在执行像这样的边界测试时,我如何正常使用DocumentStore但是EmbeddableDocumentStore

1 个答案:

答案 0 :(得分:1)

你如何与DocumentStore&#34;互动?在你的控制器?控制器真的只需要&#34;互动&#34;使用可由WebAPI基础结构注入的IDocumentSession,并在集成测试中注册IDocumentStore,由EmbeddableDocumentStore实现(假设您使用某种IoC容器)。