2015-09-25 49 views
1

试图找出如何建立具有使用LINQ嘲笑的方法Mock.Of <foo>设置回电话,随着参数

Mock.Of<foo>(f=> f.Method(It.IsAny<DateTime>(), It.IsAny<DateTime>()) == 
     Func<DateTime,DateTime,List<DateTime> = (date1,date2){ /*stuff*/ }); 

类似的东西参数的方法,尝试了一些变化和被挖围绕网络。我知道我以前做过这件事,但对于我来说,找不到我想要的东西。

+1

这甚至不编译... –

+0

正确的,这就是为什么我试图完成 – workabyte

回答

1

随着起订量,假设你的界面是这样的:

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

我知道这种做法,但喜欢一个例子的。 语法。我知道有一种方法,一旦做到这一点,只是无法找到它....感谢回复 – workabyte

+0

@workabyte检查我的编辑。我认为这是你正在寻找的语法。 – Erik

+0

我几乎肯定有一种方法可以直接在.Of <>() 中设置它。这样做的确可行,但真的希望能够在一次调用中将它连接起来, 。再给它一两天,看看是否有人有答案,如果不是病人,将其标记为答案,因为你是对的,他们的工作只是试图做一点不同。 – workabyte