使用乌鸦数据库进行边界测试

本文关键字:边界 测试 数据库 乌鸦 | 更新日期: 2023-09-27 18:35:18

我正在使用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);
    }
}

当我提交条目时,ControllerDocumentStore交互,因为这就是它在生产中的工作方式。

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

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

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

使用乌鸦数据库进行边界测试

如何在控制器中"与 DocumentStore 交互"?控制器实际上只需要与 WebAPI 基础结构注入的 IDocumentSession "交互",并且在集成测试中,您将 IDocumentStore 注册为由 EmbeddableDocumentStore 实现(前提是您使用某种 IoC 容器)。