【发布时间】:2017-08-06 05:34:17
【问题描述】:
所以当有返回值时,我可以在 Moq 中做到这一点
mockStudentRepository.Setup(m => m.Create(It.IsAny<IStudent>())).Returns<IStudent>(s =>
{
students.Add(s);
return 1;
});
所以这个 lambda 作为存储库的模拟实现运行。
当方法返回 void 时,我该怎么做?当我尝试相同的代码时,退货不可用。我现在有这样的事情:
mockStudentRepository.Setup(m => m.Update(It.IsAny<IStudent>()));
我想放置一个 lambda,它会在调用 Update 时运行,就像上面的第一个代码一样。我该怎么做?
【问题讨论】:
-
你尝试了什么?首先测试您的代码而不模拟 m.Update
-
对不起,这完全是我的意图,模拟这个方法。我不想为它运行实际的代码,我只想让它运行一个假的实现。我尝试的是我创建了一个学生存储库的假实现,它肯定可以工作,但我只想为该方法运行一个 lambda,而不是实现学生存储库。
-
您在寻找回调方法吗?也许QuickStart 页面有一个适合您需求的示例。
标签: c# unit-testing moq xunit.net