Используя Moq, есть ли способ декларативно настроить фиктивный объект для выдачи исключения? - PullRequest
0 голосов
/ 08 марта 2019

Я использовал Moq's linq для проверки функции раньше, но только для установки свойств или возврата значений из простых функций.Мне любопытно, есть ли способ настроить фиктивный объект для выдачи исключения, используя Mock.Of<>?

. Он принимает Expression<Func<T, bool>> в качестве предиката.Если он способен использовать выражение linq для настройки смоделированного метода для генерирования исключения, я рисую пробел в правильном синтаксисе, чтобы сделать это.

Возможно ли это вообще?

1 Ответ

1 голос
/ 08 марта 2019

Из Быстрый старт :

LINQ to Mocks отлично подходит для быстрого устранения зависимостей, которые обычно не нуждаются в дальнейшей проверке. Если вам позже понадобится проверить некоторые вызовы этих макетов, вы можете легко получить их с помощью Mock.Get(instance).

Хотя в нем явно не упоминаются исключения, то же самое относится и к ним:

var mockService = Mock.Of<ISomeService>(/*your usual declarative setup*/);

// adding exceptions by reverting to classic setup:
Mock.Get(mockService).Setup(s => s.MyMethod()).Throws(myException); // or Returns/Verify/etc.

Так что лучшее, что вы можете сделать, это смешать два пути. Простая настройка может быть выполнена с помощью Mock.Of<>, а проверка / исключения могут быть добавлены путем извлечения внутренне созданного макета с помощью Mock.Get().

...