2015-09-25 56 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