I can't find an example of the usage of the When method in Moq
When(Func<bool> condition);
What is the purpose/usage of the method? Please give a cod开发者_JAVA百科e sample demonstrating a scenario where it would be useful.
"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.
精彩评论