Подтвердить что ты не робот

Использование метода Moq When (Func <bool>)

Я не могу найти пример использования метода When в Moq

When(Func<bool> condition);

Какова цель/использование метода? Просьба дать образец кода, демонстрирующий сценарий, где это было бы полезно.

4b9b3361

Ответ 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. Это позволяет вашему издеваемому объекту реагировать по-разному в зависимости от данного условия.