Я не могу найти пример использования метода When в Moq
When(Func<bool> condition);
Какова цель/использование метода? Просьба дать образец кода, демонстрирующий сценарий, где это было бы полезно.
Ответ 1
"Когда" дает вам возможность иметь разные настройки для одного и того же издевающегося объекта, в зависимости от того, что вы должны решить. Скажем, вы хотите протестировать поставщика формата, который вы написали. Если программа (= 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);
Ответ 2
С помощью этого метода вы можете настроить поведение вашего издеваемого объекта, когда условие, установленное в Mock<T>.When(...), оценивается как true. Это позволяет вашему издеваемому объекту реагировать по-разному в зависимости от данного условия.