Что было бы хорошим подходом для решения этого поведения / требований с использованием TDD?
Я обычно вижу, что дизайн разбивается на две части
- Кусок, который сложен, но действительно "прост" для тестирования
- Кусок, который сложно тестировать, но действительно "прост"
По сути, вы организация того, что «риск» лежит преимущественно в коде, который легко тестировать.
Одно из свойств кода, которое действительно просто: он также имеет тенденцию быть очень стабильным. Сочетание низкого риска, стабильности и сложности в тестировании означает, что инвестиции в автоматизацию тестирования здесь менее привлекательны.
Фактически нет фактического результата.
Запись нет операции; нет никакой пользы в выполнении какой-либо работы, которая не имеет какого-либо заметного побочного эффекта.
Это обычный шаблон, который мы рассматриваем на промежуточной стадии вывода. Например, если мы должны воспроизводить звук из динамиков, то, что мы могли бы сделать в коде, это создать шов между работой по выбору тона и фактическим механизмом представления тона говорящему. В этом месте мы также собираем информацию, чтобы мы могли ее проверить.
Так что нет интерфейса publi c для внутренних компонентов ЦП.
Наличие тестового интерфейса как правило, удовлетворительный результат. Часто оказывается, что вы хотите опубликовать sh тестовый интерфейс, чтобы использовать его для удовлетворения требований к мониторингу или наблюдаемости.
Интерфейс publi c слишком широк для тестирования этого единственного поведение.
Да, это обычное дело. Обычный ответ состоит в том, чтобы реорганизовать ваш широкий тестируемый модуль в несколько, возможно даже множество, узких тестируемых модулей. Обзор Parnas 1971 .
Может также помочь подумать о различии между методами publi c (доступными вне модуля) и опубликованными методами (доступными кодом что вы не контролируете).