Учитывая, что я хочу проверить свой метод с двумя параметрами: один должен привести к успеху, а другой - к исключению.Спок: тестирование падений и успешных вызовов в одной функции?
Дать что-то вроде ..
when:
myObject.myMethod(value);
then:
result
where:
value | result
new Good() | notThrown(Exception)
new Bad() | thrown(Exception)
.. невозможно в Спока.
Как это исправить и не писать два отдельных метода?
Почему вы хотите, чтобы избежать отдельных тестов? Помните, что каждый тест (метод) должен проверять * одно и только одно поведение *. Успешное выполнение и выдача ошибки - это два фундаментальных разных поведения с (надеюсь) различными предпосылками. Поэтому у них действительно должен быть собственный тест! –
Тимоти, с одной стороны, вы правы, с другой стороны - если мы используем предложение «где» в Споке, мы уже тестировали многие поведения в одном тесте. Если считается, что можно проверить многие входящие параметры по сравнению со многими исходящими параметрами, то почему его неправильно тестировать многие входящие параметры по сравнению с исходящими параметрами И исключениями? – MiamiBeach
Одним из больших преимуществ unittest является то, что вы можете сказать по имени метода тестирования, что пошло не так. Но это возможно только в том случае, если у каждого метода тестирования есть только одна причина неудачи. Тестирование с помощью нескольких входов * может * следовать этому правилу, но тестирование сценария «счастливый день» и обработка исключений - нет. –