我正在模拟使用Moq的方法,并且我希望该方法返回 null ,但它不返回 null ,我不确定为什么。
这是我的设置代码:
var mock2 = new Mock<ReminderRepository>(stubPatientRemindersDBModelContainer);
mock2.CallBase = true;
mock2.Setup(x => x.GetPatientEscalations(userName, patientId, startDateTime, endDateTime, new DataTable()))
.Returns((PatientEscalationsDto)null);
调试时,我希望分配给GetPatientEscalations
的变量为 null ,但不是。
我在做什么错了?
答案 0 :(得分:3)
检查传递给模拟设置的参数。
mock2
.Setup(x => x.GetPatientEscalations(userName, patientId, startDateTime, endDateTime, new DataTable()))
.Returns((PatientEscalationsDto)null);
如果它们与调用成员时实际传递的内容不匹配,则将在您启用CallBase
后恢复为基本调用。
尝试使用It.IsAny<T>()
参数匹配器来放宽对模拟成员的期望
mock2
.Setup(x => x.GetPatientEscalations(
It.IsAny<string>(),
It.IsAny<int>(), //this is an assumption. use desired type here
It.IsAny<DateTime>(),
It.IsAny<DateTime>(),
It.IsAny<DataTable>()))
.Returns((PatientEscalationsDto)null);
这样,传递的所有参数都将匹配并调用模拟成员以按预期方式运行。