🕋 Изолируйте компонентные тесты
Перешел тут в новую команду и столкнулся с интересным решением. Возможно оно было сделано по рациональным причинам, но все же предостерегу всех от подобного.
💁♀️ В чем суть. Есть у нас компонент Site API. В нем есть разные тесты. Юнитовые, конпонентные, интеграционные. Обычно у нас принято, что перед запуском компонентных тестов, мы запускаем docker-compose файлик, где содержатся все зависимости сервиса. В более технически зрелых проектах используются dotnet-testcontainers.
Сделал фичу, хочу запустить компонентные тесты:
Поискал глазами файлик — не нашел. Поискал dotnet-testcontainers — не нашел. Посмотрел в ридмиху. В ней нашел абстрактное объяснение, почему не будет e2e тестов на окружении, но как запустить тесты локально — не нашел. Запускаю тесты. Не проходят. Ругаются на монгу. Пробую запустить в github actions. Все проходит. Иду к коллеге с вопросами. Он предлагает понизить версию библиотеки для монги и вуаля тесты проходят. (тут я говорю: Да какого хуя, блять! 🤬)
Оказалось, что в гитхабовском воркфлоу все же запускается контейнерная версия монги и она подходит под новую версию библиотеки, а локально тесты ходят в настоящую монгу. (тут я говорю: Да почему так-то, блять! 😐)
У меня есть принцип — я никогда не ругаю чужой код, и чужие решения. Всегда стараюсь понять, почему было сделано так как было сделано. Это в разы продуктивнее ИМХО. Думаю, что ребята, которые это пилили сделали первое быстрое решение, с прицелом заменить в будущем, а затем понавалилось проектов и стало как-то не до этого, и так и осталось.
🅰️ В общем, вывод такой:
1️⃣ Лучше сразу в компонентных тестах подменяйте все зависимости изолированно. Используйте dotnet-testcontainers. На крайний случай сделайте docker-compose и в ридмихе напишите, что перед запуском тестов его нужно поднять и приобнять.
2️⃣ Если ваш проект постоянно в авралах, то не разменивайтесь на быстрые решения, и не верьте менеджерам, которые говорят, что дадут вам время на рефакторинг через три месяца после запуска проекта — это все беспардонный обман. (а по факту лютый пиздеж даже не вам, а самому себе)
Такие дела.
#опыт
Post #183
314
- 🔥 4
- 👍 1
- 🌚 1