单元测试Z实体框架Plus扩展

c# entity-framework entity-framework-plus nsubstitute unit-testing

当使用Z.EntityFramework.Plus扩展时,我找不到一种方法来模拟/替换当使用任何加号扩展而不仅仅是Future()时上下文返回的内容。我尝试的所有内容都会在z扩展未来库中抛出NullReferenceException。

存储库示例:

public Task<DocumentDomain> GetDocuments(int id)
{
  var futureQuery1 = _context.ReportTypes.Where(x => x.IsReadOnly).Future();
  var futureQuery2 = _context.Reports.Where(x => x.CreateDate < DateTime.Now.AddDays(-10)).Future();
  var futureQuery3 = _context.Person.DeferredFirstOrDefault(x => x.Id == id).FutureValue();

   return new DocumentDomain(futureQuery1.ToList(), futureQuery2.ToList(), futureQuery3.Value);
}

单元测试库:

public Task<DocumentDomain> GetDocuments(int id)
{
  var futureQuery1 = _context.ReportTypes.Where(x => x.IsReadOnly).Future();
  var futureQuery2 = _context.Reports.Where(x => x.CreateDate < DateTime.Now.AddDays(-10)).Future();
  var futureQuery3 = _context.Person.DeferredFirstOrDefault(x => x.Id == id).FutureValue();

   return new DocumentDomain(futureQuery1.ToList(), futureQuery2.ToList(), futureQuery3.Value);
}

没有使用Futures它工作正常。我试过嘲笑几种不同的方法,但总是得到一个错误。大多数情况下,它是“oops Z扩展遇到错误”异常。

我在想它是因为Z扩展期望一个真正的ObjectContext但不知道如何克服这个问题。有没有人遇到类似的问题?有谁知道任何解决方案?谢谢。

专家解答

Future功能期待一个真正的ObjectContext 。我相信当调用方法GetDbContext时,当前场景失败,因为找不到上下文。

我不知道有一种解决方法,但可以添加一个选项,例如UseMockContext ,它将解析所有查询而不对它们进行批处理(就像你没有使用Future功能一样)。

让我知道如果添加此选项,它可以解决您当前的问题。

如果是这种情况,我建议你在这里创建一个问题: https//github.com/zzzprojects/EntityFramework-Plus/issues




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因