Тимур · бэкенд, #qa-antrakt
После истории с 40 000 писем я понял, что
send_ticketтрогать страшно, а проверить нечем. Она сама лезет в базу, в часы, в генератор номеров и в почту. Вера говорит, что такую функцию в тест не затащишь без подмены в четырёх местах. Покажи, как её переписать, чтобы тесту ничего не приходилось подменять. Код мой, разрешаю трогать.
В прошлом уроке ты подменял соседей кода моками и узнал, что проверять у мока стоит только исходящие команды. Но подменять можно лишь то, до чего тест дотянется. Если функция сама создаёт почтовый клиент где-то внутри, тесту остаётся лезть в её импорты. В этом уроке перестроим код так, чтобы всё внешнее он получал снаружи. Тогда тест передаёт свою почту, свои часы и свои номера.
Вилка и розетка
Чайник не припаян к проводке квартиры. У него есть вилка, а в стене розетка. Розетка обещает форму: два штыря и 220 вольт. Откуда ток, чайнику всё равно: из квартиры, с дачного генератора или из лабораторного блока питания в магазине, где его проверяют перед продажей.
Теперь представь чайник, припаянный к проводке. Он работает, но проверить его можно только у тебя дома, и каждая проверка честно греет воду и мотает счётчик. Замкнуло, и выбило пробки во всей квартире.
send_ticket Тимура и есть такой чайник. Сегодня приделаем ей вилку.
урок из курса
Урок из курса «Автотестирование с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.