C# 当(Func<;bool>;)方法时最小起订量的使用

C# 当(Func<;bool>;)方法时最小起订量的使用,c#,moq,C#,Moq,我找不到在Moq中使用When方法的示例 When(Func<bool> condition); When(函数条件); 该方法的目的/用途是什么?请给出一个代码示例,演示一个有用的场景。使用此方法,当(…)中设置的条件计算为true时,您可以配置模拟对象的行为。这使您的模拟对象能够根据给定的条件做出不同的反应。“When”为您提供了为同一模拟对象进行不同设置的选项,具体取决于您必须做出的决定。假设您想测试您编写的格式提供程序。如果程序(=测试)在早上运行,则某个函数调用应返回n

我找不到在Moq中使用When方法的示例

When(Func<bool> condition);
When(函数条件);

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

使用此方法,当(…)中设置的条件计算为true时,您可以配置模拟对象的行为。这使您的模拟对象能够根据给定的条件做出不同的反应。

“When”为您提供了为同一模拟对象进行不同设置的选项,具体取决于您必须做出的决定。假设您想测试您编写的格式提供程序。如果程序(=测试)在早上运行,则某个函数调用应返回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);
var mockedService=new Mock();
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);

对于本例,最好使用IDateTimeProvider这样的接口模拟DateTime。然后您可以对此进行几个单元测试。根据时间的不同,单元测试不应该有不同的行为!