в котором мы получаем payload
по payload обновляем DB
посылаем данные к примеру в ГосУслуги ))
шлем письмо пользователю
как это правильно организовать и протестировать?
Есть контроллер, который принимает запрос. Контроллер вызывает модуль с функцией do_the_thing Функция do_the_thing внутри вызывает update_db, call_gosuslugi, send_mail. Каждая из этих трёх функций это взаимодействие с внешним миром, для них пишется интерфейс и мок Пишешь интеграционные тесты для update_db, call_gosuslugi, send_mail Пишешь юнит-тесты для do_the_thing, где call_gosuslugi замокана, update_db выполняется в сендбоксе и send_mail замокана Для каждого юнит-теста пишешь функцию assert_do_the_thing, которая проверяет, что каждый мок вызван по одному разу, в базе данных лежат правильные данные и всё такое Пишешь тест для вебхука, который просто проверяет что do_the_thing работает правильно, вызывая assert_do_the_thing Если есть время, пишешь e2e
нуу - так а в чем у нас спор тогда? и при чем тут рубисты в чате? ))
Моки для модулей писать не нужно. Только для внешних взаимодействий их нужно писать
Обсуждают сегодня