实体框架 - 最小起订量设置参数 linq 包含



当我添加更多包含时,我已经破坏了很多单元测试,因为我没有在 EF 中使用延迟加载。在我的模拟设置之前,设置了以下行:

  mockDocRepo.Setup(
            x => x.GetBy(It.IsAny<Expression<Func<Doctor, bool>>>(), It.IsAny<Expression<Func<Doctor, object>>>()))
            .Returns(stubDoctor);

这对于单个包含工作正常,但是在调用 GetBy 时添加另一个包含会破坏我的所有测试。例如:

 var doctor = _dbContextScope.Repository<Doctor>().GetBy(x => x.Id == DoctorId, y => y.Contracts, y => y.Leave.Select(x => x.Type));

我尝试更改我的最小起订量设置以接受数组,例如It.IsAny<Expression<Func<Doctor, object>>[]>()但这似乎不起作用。我还尝试在设置中添加第二个包含例如

mockDocRepo.Setup(
            x => x.GetBy(It.IsAny<Expression<Func<Doctor, bool>>>(), It.IsAny<Expression<Func<Doctor, object>>>(),It.IsAny<Expression<Func<Doctor, object>>>()))
            .Returns(stubDoctor);

似乎打破一切的是最终包含中的.Select(x => x.Type)

关于如何解决此问题的任何想法都会很棒。

我认为不能做最小起订量设置Linq Enumerable.Select方法。它是可枚举类上的静态方法。

使用最小起订量,您无法模拟/设置静态方法。为了设置它必须是一个虚拟方法。

或者尝试抽象 DbContext 并将 .select 包装在虚拟方法中。然后,您应该能够进行设置。

相关内容

  • 没有找到相关文章

最新更新