集成测试存储库类

本文关键字:存储 集成测试 | 更新日期: 2023-09-27 17:54:45

是否可以更改集成测试的数据库(实体框架),以便我可以在数据库中创建测试记录,并在测试完成时丢弃所有内容?

现在我正在污染我用于本地开发的数据库。

PS:我意识到这一定是非常基本的东西,但由于某种原因,我找不到关于这方面的文档。

集成测试存储库类

实现这一点的一种方法是将每个测试包装在TransactionScope块中,要么显式地针对每个测试,要么在设置方法中。如果没有提交范围,则会回滚更改。下面是一个例子:

找到我要找的东西了。简单地更改数据库名称比我希望的要容易。您可以通过简单地构造带有名称的DbContext来更改数据库名称。

new ApplicationContext("TestDatabase")

ApplicationContext的实现:

public class ApplicationContext : DbContext, IDbContext
{
    public ApplicationContext()
    {
    }
    public ApplicationContext(string databaseName) : base(databaseName)
    {
    }
}

运行测试我创建了一个单独的数据库,可以用于测试。