I can\'t find an example of the usage of the When method in Moq
When(Func condition);
What is the purpose/usage of the method? Plea
"When" gives you the option to have different setups for the same mocked object, depending on whatever you have to decide. Let's say you want to test a format provider you have written. If the program (= test) runs in the morning a certain function call should return null; in the afternoon a certain value. Then you can use "When" to write those conditional setups.
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);
With this method you can configure your mocked object's behavior when the condition set in Mock<T>.When(...)
evaluates to true. This enables your mocked object to react differently depending on the given condition.