Во-первых, по замыслу, он не будет выдавать исключение, если поведение макета не строгое.
Ссылка Moq Быстрый старт: Настройка поведения макета
Make mock ведет себя как «истинный Mock», вызывая исключения для всего, что не имеет соответствующего ожидания: в слоге Moq - «Strict» mock; поведение по умолчанию - «Свободный» макет, который никогда не выдает и возвращает значения по умолчанию или пустые массивы, перечислимые значения и т. Д. c. если для члена не установлено ожидание
примечание: выделено мое
var mock = new Mock<IFoo>(MockBehavior.Strict);
Во-вторых, Setup
не выполняется правильно путем создания Сопоставление аргументов вне выражения Setup
mockActivityReportBO.Setup(_ => _.AddReport(It.Is<ActivityReport>(
x => x.Title == It.IsAny<string>()
&& x.Limits == It.IsAny<string>()
&& x.Description == It.IsAny<string>()
&& x.DueDate == It.IsInRange(DateTime.Now.AddDays(12), DateTime.MaxValue, Range.Inclusive)
&& x.CountyNumber == It.IsInRange(1, 5, Range.Inclusive)
&& x.ActivityReportID == It.IsInRange(1, 12, Range.Inclusive)
)
));
Ссылка Moq Быстрый старт: Соответствующие аргументы
Обновление
Мне бы хотелось ложное исключение, которое выдается, когда я передаю параметр, который содержит данные за пределами настройки. Например, если я пытаюсь вызвать add report и передаю объект отчета, в котором переменная-член Title = null, я хотел бы выдать исключение.
Укажите, что ожидать, и сообщите Настройка для выдачи исключения, когда это происходит
Например,
mockActivityReportBO
.Setup(x => x.AddReport(It.Is<ActivityReport>(y => y.Title == null)))
.Throws<InvalidOperationException>(); //<-- replace with desired Exception
Выше приведено исключение, когда вы передаете объект отчета, где переменная-член Title = null
, в макет. (Использование режима поведения по умолчанию «Свободный», конечно. Не «Строгий»)