我想集成测试我的存储库。
我希望在每个集成测试方法之前设置和插入测试数据。然后我想要执行我的存储库逻辑,然后通过从数据库返回正确的数据来断言逻辑工作。
我不想模拟和单元测试DbSet ;-)只是真正的集成测试。
我的问题是关于整个数据库的设置和清除测试数据。
我使用代码优先方法生成TestDatabase和ProdDatabase。在ProdDatabase i种子实际数据中播放,然后在UI中使用它并检查正确的行为。TestDatabase只用于集成测试。
两个数据库都是从ONE上下文创建的。
当我更改实体的任何属性并运行集成测试时,也会调用来自我的DbContext的覆盖种子方法。但我不想在我的TestDatabase上出现这种情况。
我如何区分种子调用只发生在我的ProdDatabase?我的TestDatabase为每个测试生成自己的“种子”/setup数据?
发布于 2015-06-12 16:40:17
在每种情况下,您都可以在应用程序启动期间使用set a different IDatabaseInitializer或DbMigrationsConfiguration (如果您使用MigrateDatabaseToLatestVersion作为初始化程序):
System.Data.Entity.Database.SetInitializer(new TestOrProdInitializer());您甚至可以使用不同的configuration file settings为生产和测试设置数据库初始化程序:
如果需要在删除数据库后重新启动,还可以强制使用dbContext.Database.Initialize(true)进行初始化。
https://stackoverflow.com/questions/30737484
复制相似问题