集成测试 - 在数据库中设置数据

时间:2017-05-20 12:36:38

标签: c# entity-framework-6 integration-testing

我需要为我的图层编写公开服务方法的集成测试。但我需要我的数据库处于某种状态才能通过测试

例如,为了测试GetStoreByID方法,我需要在我的数据库中存储1,而不是存储2(用于ko测试)

该数据库由另一个团队使用sql项目(dacpac)

开发和部署

我将Entity Framework 6.1.3与Edmx一起使用

在这种情况下,在测试之前在数据库中设置数据的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

如果您的数据访问由一个接口分隔(即为每种类型使用IDBSet之类的东西),我个人应尽可能避免完全依赖数据库,并使用fakedbsets(如果你需要测试存储库/ DAL代码)或者只是使用moq或nsubstitute进行模拟,如果你不需要。

我知道这并没有专门回答你的问题,但设置测试数据的最佳方法是在我的经验中尽可能少地使用外部依赖项。数据库添加了您不希望在单元/集成测试中依赖的额外移动部件。如果您有CI服务器等,这也会增加复杂性......您通常希望避免这种情况。

答案 1 :(得分:0)

此链接https://msdn.microsoft.com/en-us/library/dn314431(v=vs.113).aspx提供了Microsoft MSDN文章,介绍了如何通过伪造数据库来使用EF6编写测试。

总之,本文涵盖了主题'在为您的应用程序编写测试时,通常需要避免命中数据库。实体框架允许您通过创建上下文(通过测试定义的行为)来实现这一点,该上下文利用内存数据。'