用Moq和/或InMemoryDbSet模拟一部分EF DbContext

时间:2019-03-21 20:37:12

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

此问题是关于Mocking EF DbContext with Moq和/或类似问题的内容。我很清楚这一点。请先阅读问题,然后再回复。谢谢。

  1. 我们有一个相当复杂的数据库,其中包含一些称为“业务对象”的数据库和一些称为“数据对象”的数据库。通常会随着每个新的用户请求创建或更新“业务对象”,并且“数据对象”相当稳定,但如果在第一次调用时丢失,则有时会在用户请求期间创建。

  2. 我想在沙盒中创建集成测试,可以在其中将数据对象从真实数据库中拉出(因为它们太多了)模拟),但可以控制业务对象会发生什么。例如,如果我有一个get or create工作流程(当然需要进行一些验证),那么我想在分别测试get或{{1}之后,显式测试该整个工作流程 }其他测试中的工作流程。但是,如果我测试create工作流程,那么使用真实的数据库,我只能测试一次get or create工作流程的一部分,但是我只会打create工作流程(因为该对象将在之后第一次测试运行)。抛出这样的结果:许多测试通常并行运行,结果变得不可预测。

我想知道什么是执行数据库上下文的部分“模拟”的正确方法,其中大多数表都来自真实的数据库,但是每个测试可以设置一些表,例如在get s

非常感谢!

0 个答案:

没有答案