【发布时间】:2016-07-12 14:50:30
【问题描述】:
当我添加更多包含时,我破坏了很多单元测试,因为我没有在 EF 中使用延迟加载。在我的 Mock 设置线之前:
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) 打破了一切。
任何关于如何解决这个问题的想法都会很棒。
【问题讨论】:
标签: entity-framework linq unit-testing mocking moq