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

Двойники: dummy, stub, spy, mock, fake

junior~40 мин

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

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

После истории с 40 000 писем я сдаюсь, тесты нужны. Вот OrderService: списывает деньги через «ПлатиМ», сохраняет заказ и шлёт письмо. Покрой его тестами, только чтобы ни одной настоящей копейки и ни одного настоящего письма. И объясни заодно, чем мок отличается от стаба. Глеб моком называл всё подряд.

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

Дублёры на съёмочной площадке

Когда в фильме герой прыгает с крыши поезда, прыгает не звезда, а каскадёр. Зритель видит знакомую куртку и затылок, а режиссёру важно одно: сцена снята, и звезда цела.

На площадке заменяют не только звёзд. В зале на заднем плане сидят манекены: они нужны, чтобы кресла не пустовали, и на них никто не смотрит. У актёра массовки одна реплика, «Билетов нет», и её он скажет, кто бы ни спросил. Помощник режиссёра с блокнотом записывает, кто когда вышел и что сказал, а после дубля его можно расспросить. Улица в павильоне сделана из фанеры: по ней можно пройти, но за дверями домов пусто.

Каждый такой заменитель заменяет что-то настоящее, но делает это по-своему. В тестах ровно так же.

урок из курса

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

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