-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


TDD vs не TDD

Четверг, 03 Сентября 2020 г. 11:41 + в цитатник
korvin:
Цитата Fester @
Так и во втором варианте надо знать детали

Какие?

Цитата Fester @
Как видишь Request придется тебе мокать целиком и полностью...

Не вижу, зачем? Это pure data, там нечего мокать. Если ты про canWithdraw, то это простой чистый метод, зачем его мокать? Всякие БД и прочие внешние сервисы мокают из-за сайд-эффектов и из-за того, что поднимать БД/внешний сервис для каждого теста — крайне медленно.
Но можно canWithdraw вынести в Request как Lazy-поле, и снова мокать ничего не надо.

Цитата Fester @
Как видим, ни от каких зависимостей ты не ушел

Я их сделал явными и ограниченными.

Цитата Fester @
а реализацию тебе надо знать чтобы не мокать то, что не нужно в данном тесте.

Не надо, мне нужно знать только тип входных данных (Request) и тип выходных данных (Response), которые полностью описывают всё, что нужно.

Цитата applegame @
Ага, пользуясь тем, что аргументы функции вычисляются гарантированно раньше самой функции.

Что?

Цитата applegame @
Даже вон do-нотацию придумали, чтобы упростить маскировку.

Нет, не для этого.

Цитата applegame @
Наш мир, в первую очередь, причинно-следственный, и поэтому императивная модель

Не применима, т.к. позволяет менять уже существующие причинно-следственные события, когда в реальном мире они не меняются, только порождаются новые. Чисто. Функционально.

Цитата applegame @
Невозможно сварить борщ не составив последовательность действий. Даже если ты просто собираешь домик из готовых кубиков, ты не можешь начать строительство с крыши.

Эти аналогии вообще к чему? По-твоему функциональные программы пишут на лету, в рантайме? Программа и есть описание процесса, выполненное в той или иной нотации/модели.

Цитата Fester @
Ну есть скажем требование: "в случае неудачного соединения N-раз повторить повторить попытку, после чего сообщить пользователю об ощибке". Вполне себе нормальный сценарий, который тоже можно протестировать.

Ну вот смотри, D_KEY, вместо того, чтобы декомпозировать код и вынести логику retry в отдельный RetriableConnection с настраиваемой политикой, отдельно и независимо протестированную, Fester решил накостылять сомнительные тесты прям над бизнес-логикой, сохранив её сложность и зафиксировав эту сложность в спецификации (тесте). Чё-т не очень ему TDD помогает делать код/архитектуру лучше.

https://forum.sources.ru/index.php?showtopic=419507&view=findpost&p=3838214

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку