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*/ });

之类的东西,我尝试了一些变化,并在网上挖掘。

Mock.Of< foo>为带参数的方法调用设置返回值

使用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方法。