2013-01-20 57 views
0

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

现在我正在污染我用于本地开发的数据库。 PS:我意识到这一定是非常基本的东西,但由于某种原因,我无法找到关于此的文档。

+0

这很大程度上取决于您的应用程序当前如何设置。 EF上下文在构造函数中允许连接字符串..但是如何创建上下文?如果您使用的是DI/IoC框架,这将非常容易切换回来和转发。 –

回答

0

找到我正在寻找的东西。简单地改变数据库名称比我希望的更容易。您可以通过简单地使用名称构造DbContext来更改数据库名称。

new ApplicationContext("TestDatabase") 

ApplicationContext中的实现:

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

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

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

3

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