C# 在Moq中设置返回值无效时如何运行函数
所以当有一个返回值时,我可以在最小起订量中这样做C# 在Moq中设置返回值无效时如何运行函数,c#,unit-testing,moq,xunit.net,C#,Unit Testing,Moq,Xunit.net,所以当有一个返回值时,我可以在最小起订量中这样做 mockStudentRepository.Setup(m => m.Create(It.IsAny<IStudent>())).Returns<IStudent>(s => { students.Add(s); return 1; }); mockStudentRepository.Setup(m=>m.Create(It.IsAny())。返回(s=> { 学生。添加(s); 返回1; }
mockStudentRepository.Setup(m => m.Create(It.IsAny<IStudent>())).Returns<IStudent>(s =>
{
students.Add(s);
return 1;
});
mockStudentRepository.Setup(m=>m.Create(It.IsAny())。返回(s=>
{
学生。添加(s);
返回1;
});
因此,这个lambda作为存储库的模拟实现运行
当一个方法返回void时,我该怎么做?当我尝试相同的代码时,返回值不可用。我现在有这样的事情:
mockStudentRepository.Setup(m => m.Update(It.IsAny<IStudent>()));
mockStudentRepository.Setup(m=>m.Update(It.IsAny());
我想放置一个lambda,它将在调用Update时运行,就像上面的第一个代码一样。我该怎么做呢?我相信您正在寻找分机
mockStudentRepository
.Setup(m => m.Update(It.IsAny<IStudent>()))
.Callback<IStudent>(s => {
var student = students.Where(x => x.Id == s.Id).FirstOrDefault();
if(student != null) {
//...
}
});
mockStudentRepository
.Setup(m=>m.Update(It.IsAny()))
.Callback(s=>{
var student=students.Where(x=>x.Id==s.Id).FirstOrDefault();
如果(学生!=null){
//...
}
});
您尝试了什么?从测试代码开始,不要模仿m.UpdateSorry,这完全是我的意图,模仿这个方法。我不想为它运行实际的代码,我只想让它运行一个假的实现。我尝试的是我创建了一个学生存储库的假实现,这确实有效,但我只想为该方法运行lambda,而不是实现学生存储库。您正在寻找回调方法吗?也许页面上有一个适合您需要的示例。