«Когда» дает вам возможность иметь разные настройки для одного и того же объекта, в зависимости от того, что вы решите. Допустим, вы хотите протестировать поставщика форматов, который вы написали. Если программа (= test) запускается утром, определенный вызов функции должен вернуть значение null; днем определенное значение. Затем вы можете использовать «Когда», чтобы написать эти условные установки.
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);