在 Moq 中设置时 return 值无效时如何 运行 函数
How to run a function when return value is void upon setup in Moq
所以当有 return 值时,我可以在 Moq
mockStudentRepository.Setup(m => m.Create(It.IsAny<IStudent>())).Returns<IStudent>(s =>
{
students.Add(s);
return 1;
});
因此此 lambda 得到 运行 作为存储库的模拟实现。
当方法 return 无效时我该如何做?当我尝试相同的代码时,Returns 不可用。我现在有这样的东西:
mockStudentRepository.Setup(m => m.Update(It.IsAny<IStudent>()));
我想放置一个 lambda,它会在调用 Update 时 运行,就像上面的第一个代码一样。我该怎么做?
我相信您正在寻找 Callback
扩展程序。
mockStudentRepository
.Setup(m => m.Update(It.IsAny<IStudent>()))
.Callback<IStudent>(s => {
var student = students.Where(x => x.Id == s.Id).FirstOrDefault();
if(student != null) {
//...
}
});
所以当有 return 值时,我可以在 Moq
mockStudentRepository.Setup(m => m.Create(It.IsAny<IStudent>())).Returns<IStudent>(s =>
{
students.Add(s);
return 1;
});
因此此 lambda 得到 运行 作为存储库的模拟实现。
当方法 return 无效时我该如何做?当我尝试相同的代码时,Returns 不可用。我现在有这样的东西:
mockStudentRepository.Setup(m => m.Update(It.IsAny<IStudent>()));
我想放置一个 lambda,它会在调用 Update 时 运行,就像上面的第一个代码一样。我该怎么做?
我相信您正在寻找 Callback
扩展程序。
mockStudentRepository
.Setup(m => m.Update(It.IsAny<IStudent>()))
.Callback<IStudent>(s => {
var student = students.Where(x => x.Id == s.Id).FirstOrDefault();
if(student != null) {
//...
}
});