Mock.Of< foo>为带参数的方法调用设置返回值
本文关键字:方法 调用 设置 返回值 参数 Of foo Mock | 更新日期: 2023-09-27 18:14:38
试图找出如何设置一个方法,有参数使用Linq模拟
Mock.Of<foo>(f=> f.Method(It.IsAny<DateTime>(), It.IsAny<DateTime>()) ==
Func<DateTime,DateTime,List<DateTime> = (date1,date2){ /*stuff*/ });
之类的东西,我尝试了一些变化,并在网上挖掘。
使用Moq,假设您的界面是这样的:
interface foo
{
List<DateTime> Method(DateTime date1, DateTime date2);
}
我认为你正在寻找设置模拟的语法是
var bar = new Mock<foo>();
bar.Setup(f => f.Method(It.IsAny<DateTime>(), It.IsAny<DateTime>()))
.Returns<DateTime,DateTime>((date1, date2) => new List<DateTime> { date1, date2 });
编辑
经过搜索,我发现了这个,我认为这是其他语法,我认为这是你正在寻找的:
var bar = Mock.Of<foo>();
Mock.Get(bar).Setup(f => f.Method(It.IsAny<DateTime>(), It.IsAny<DateTime>()))
.Returns<DateTime,DateTime>((date1, date2) => new List<DateTime> { date1, date2 });
这将设置您的Mock返回expectedResult
,如果您的方法调用参数date1 and date2
。
var bar = Mock.Of<foo>(f => f.Method(date1, date2) == expectedResult);
我仍然试图弄清楚是否有一种方法来设置它,使模拟方法返回它自己的输入,但还没有新的.Of
方法。