Для этого вам не нужна библиотека для насмешек.Это на самом деле не вопрос технологии, а логический.Рассмотрим ваше утверждение:
Каждый раз, когда моя логика генерирует исключение любого типа, будет возвращаться false
.
Подтверждение того, что возвращаемое значение являетсяfalse
.Без насмешек, без копания во внутренностях каркаса, ничего из этого.Помня о том, что мы не знаем, что «логика» заключается в этом методе, идея состоит в том, что на этапе «Упорядочить» вашего модульного теста будет создан сценарий, в котором логика и исключение будут вызывать исключение.Шаг «Утверждение» подтвердит, что false
является результатом операции.
Учтите, что модульные тесты сами по себе просто потребляют код для компонента.Они не должны знать или заботиться о внутренностях этого компонента.То, что у вас есть, - это сценарий, в котором вы определяете две противоречивые вещи:
- Я не хочу, чтобы потребляющий код когда-либо знал, было ли выброшено исключение, он должен просто вернуть
false
. - У меня есть код потребления, который должен знать, было ли выброшено исключение.
Одна из этих двух вещей должна измениться.
Обратите внимание, что вам не обязательно нужноизмените возвращаемое поведение метода для изменения этой проверяемой проверки.Например, вы можете просто ввести зависимость ведения журнала для компонента и в своем блоке catch
зарегистрировать исключение.Затем ваш модульный тест может смоделировать эту зависимость и утверждать, что исключение было зарегистрировано.
По сути, ваши модульные тесты проверяют наблюдаемые извне результаты операции.Таким образом, чтобы подтвердить что-то, оно должно быть внешне наблюдаемым.Либо как выброшенное исключение, либо возвращаемое значение, либо вызванная операция над зависимостью, либо какое-либо другое наблюдаемое изменение состояния системы.Если вам нужно это наблюдать, то нужно что-то заметить.Или, если это не должно делать ничего наблюдаемого, вам не нужно это наблюдать.