集成测试存储库类

时间:2013-01-20 00:40:57

标签: c# entity-framework unit-testing

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

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

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

2 个答案:

答案 0 :(得分:3)

实现此目的的一种方法是将每个测试包装在TransactionScope块中,明确地为每个测试或在setup方法中。如果未提交范围,则会回滚更改。 Here就是一个例子。

答案 1 :(得分:0)

找到我要找的东西。简单地更改数据库名称比我希望的更容易。您只需使用名称构造DbContext即可更改数据库名称。

new ApplicationContext("TestDatabase")

ApplicationContext的实现:

public class ApplicationContext : DbContext, IDbContext
{
    public ApplicationContext()
    {
    }

    public ApplicationContext(string databaseName) : base(databaseName)
    {
    }
}

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