当Moq中的条件方法时

时间:2013-03-05 00:32:05

标签: c# unit-testing mocking nunit moq

我想知道如何使用When方法供我使用。

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 个答案:

答案 0 :(得分:1)

您必须使用Setup方法返回:

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