我找不到在Moq
中使用When方法的示例When(Func<bool> condition);
该方法的目的/用途是什么?请提供一个代码示例,演示一个有用的场景。
答案 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时配置模拟对象的行为。这使得模拟对象能够根据给定条件做出不同的反应。