Раздел 43 · Автотестирование с нуля

Внедрение зависимостей: часы, номера и почта параметром

junior~35 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Тимур · бэкенд, #qa-antrakt

После истории с 40 000 писем я понял, что send_ticket трогать страшно, а проверить нечем. Она сама лезет в базу, в часы, в генератор номеров и в почту. Вера говорит, что такую функцию в тест не затащишь без подмены в четырёх местах. Покажи, как её переписать, чтобы тесту ничего не приходилось подменять. Код мой, разрешаю трогать.

В прошлом уроке ты подменял соседей кода моками и узнал, что проверять у мока стоит только исходящие команды. Но подменять можно лишь то, до чего тест дотянется. Если функция сама создаёт почтовый клиент где-то внутри, тесту остаётся лезть в её импорты. В этом уроке перестроим код так, чтобы всё внешнее он получал снаружи. Тогда тест передаёт свою почту, свои часы и свои номера.

Вилка и розетка

Чайник не припаян к проводке квартиры. У него есть вилка, а в стене розетка. Розетка обещает форму: два штыря и 220 вольт. Откуда ток, чайнику всё равно: из квартиры, с дачного генератора или из лабораторного блока питания в магазине, где его проверяют перед продажей.

Теперь представь чайник, припаянный к проводке. Он работает, но проверить его можно только у тебя дома, и каждая проверка честно греет воду и мотает счётчик. Замкнуло, и выбило пробки во всей квартире.

send_ticket Тимура и есть такой чайник. Сегодня приделаем ей вилку.

урок из курса

Урок из курса «Автотестирование с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.