使用Moq时(Func <bool>)方法</bool>

时间:2011-10-14 11:58:40

标签: c# moq

我找不到在Moq

中使用When方法的示例
When(Func<bool> condition);

该方法的目的/用途是什么?请提供一个代码示例,演示一个有用的场景。

2 个答案:

答案 0 :(得分:27)

“When”为您提供了对同一个模拟对象进行不同设置的选项,具体取决于您必须决定的内容。假设您要测试您编写的格式提供程序。如果程序(= test)在早上运行,某个函数调用应该返回null;在下午有一定的价值。然后你可以使用“When”来编写那些条件设置。

var mockedService = new Mock<IFormatProvider>();

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

答案 1 :(得分:2)

使用此方法,您可以在Mock<T>.When(...)中设置的条件评估为true时配置模拟对象的行为。这使得模拟对象能够根据给定条件做出不同的反应。