在 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) {
                //...
        }
    });