2013-03-05 43 views
0

我想圖如何使用當我的方法使用。這裏當條件方法在Moq

When(Func<bool> condition); 

另一篇文章有​​當方法

var mockedService = new Mock<IFormatProvider>(); 

mockedService.When(() => DateTime.Now.Hour < 12).Setup(x => x.GetFormat(typeof(string))).Returns(null); 

我所試圖做的是我有一個變量x美國的一個例子。我想使用When方法,因此只有當X不是Null時才執行操作。

例如

 mockedService.When(()=> !null x).Returns(x) 
     or 
     mockedService.When(condition => x).Returns(x); 

上面的代碼線的兩個不工作了Syntex是不正確的。 任何想法如何正確寫入。由於

回答

1

您必須安裝方法返回:

mockedService.When(() => null != x) 
    .Setup(s => s.GetFormat(It.IsAny<Type>())) 
    .Returns(x); 

另一種方式:

mockedService 
    .Setup(s => s.GetFormat(It.Is<Type>(t => x != null))) 
    .Returns(x); 
+0

有沒有辦法避免安裝。由於返回值(x)是另一種將某些值寫入文件的方法,而不是讀取這些值以執行斷言。我相信安裝程序可能無法正常工作?不確定。 – 2013-03-05 00:50:05

+0

我不明白。也許你需要.Callback()? – SeeSharp 2013-03-05 01:03:38