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

标签 c# linq moq

尝试找出如何使用 Linq to Mock 设置具有参数的方法

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

编辑

四处寻找后,我found this我认为我认为您正在寻找的其他语法:

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

关于c# - Mock.Of<foo> 为带参数的方法调用设置返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32791287/

相关文章:

c# - 通过 gprs 从设备读取消息

c# - 如何在 Entity Framework 中为所有 child 使用条件

c# - 获取日期期间查询内的最大版本

c# - Moq,Setup() 和 Returns() 之间的类型不匹配

c# - 非虚拟成员的无效设置 - 在接口(interface)上?

c# - 使用 AutoSize=false 防止标签自动换行

c# - 无法将其转换为 VB.net

c# - 是否有开箱即用的方法来反序列化 Json.Net 中的抽象类?

wcf - 通过 WCF 返回 Entity Framework 对象

c# - 如何指定 Intellitest 应该用于接口(interface)的工厂?