Друзья, подскажите вариант решения проблемы следующего плана:
Есть метод API (POST), который вместе с каким-то действием еще и отправляет письмо на почту. Соответственно проверять письмо и его содержимое в тестах API, которые пайплайном привязаны к деплою бека в GitLab - не есть хорошо, ибо это сразу +100 к нестабильности тестов. Поэтому мы должны как-то исключить отправку письма, ибо для его проверки будет отдельный тест. На ум приходят 2 костыля:
Добавить ключ в метод аля “no_email”: true
Создать дополнительное окружение, на котором отключены нотификейшены
Хотелось бы услышать плюсы и минусы обоих костылей или с удовольствием приму ваш вариант к рассмотрению. Может кто то уже решал данную проблему.
отправка письма на почту у вас является блокирующей операцией? т.е. ответ от сервера после вашего POST запроса отправляется, когда где-то в бизнес логике есть ответ, что письмо отправлено? или просто отправка письма помещена в брокер очередей?
Не вижу проблемы, если честно пока что. Просто не проверяйте в этом тесте наличие письма.
у вас в тестах реальным людям отправляются письма?
А в чем проблема, чтобы письма отправлялись, в рамках текущих тестов их отправка не несет никаких отрицательных эффектов (было бы странно, если б такие эффекты были).
“забить тестами воркеры, так, чтобы ушли с задержкой” - какой-то костыль.
Еще раз: чтобы не проверять отправку писем - ее просто нужно не проверять. Сама отправка может осуществляться и для этого не обязательно городить лишние конфиги, апи ключи и прочее.
Если письма у вас отправляются настоящим людям - это повод подумать, как подготовливать тестовые данные: миграциями обкатывать базу, прописывать префиксы всем почтовым адресам, а потом поднять свой mail server, на который бы сыпались эти письма.
Это я сказал о негативном подследствии если мы просто не будем обращать внимания на отправку письма. Вообщем решение пока что заключается в том, чтобы выкинуть такие тесты из общего пула и запускать их отдельной джобой