TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 309 subscribers
Post #183 314
🕋 Изолируйте компонентные тесты
Перешел тут в новую команду и столкнулся с интересным решением. Возможно оно было сделано по рациональным причинам, но все же предостерегу всех от подобного.

💁‍♀️ В чем суть. Есть у нас компонент Site API. В нем есть разные тесты. Юнитовые, конпонентные, интеграционные. Обычно у нас принято, что перед запуском компонентных тестов, мы запускаем docker-compose файлик, где содержатся все зависимости сервиса. В более технически зрелых проектах используются dotnet-testcontainers.

Сделал фичу, хочу запустить компонентные тесты:
Поискал глазами файлик — не нашел. Поискал dotnet-testcontainers — не нашел. Посмотрел в ридмиху. В ней нашел абстрактное объяснение, почему не будет e2e тестов на окружении, но как запустить тесты локально — не нашел. Запускаю тесты. Не проходят. Ругаются на монгу. Пробую запустить в github actions. Все проходит. Иду к коллеге с вопросами. Он предлагает понизить версию библиотеки для монги и вуаля тесты проходят. (тут я говорю: Да какого хуя, блять! 🤬)

Оказалось, что в гитхабовском воркфлоу все же запускается контейнерная версия монги и она подходит под новую версию библиотеки, а локально тесты ходят в настоящую монгу. (тут я говорю: Да почему так-то, блять! 😐)

У меня есть принцип — я никогда не ругаю чужой код, и чужие решения. Всегда стараюсь понять, почему было сделано так как было сделано. Это в разы продуктивнее ИМХО. Думаю, что ребята, которые это пилили сделали первое быстрое решение, с прицелом заменить в будущем, а затем понавалилось проектов и стало как-то не до этого, и так и осталось.

🅰️ В общем, вывод такой:
1️⃣ Лучше сразу в компонентных тестах подменяйте все зависимости изолированно. Используйте dotnet-testcontainers. На крайний случай сделайте docker-compose и в ридмихе напишите, что перед запуском тестов его нужно поднять и приобнять.
2️⃣ Если ваш проект постоянно в авралах, то не разменивайтесь на быстрые решения, и не верьте менеджерам, которые говорят, что дадут вам время на рефакторинг через три месяца после запуска проекта — это все беспардонный обман. (а по факту лютый пиздеж даже не вам, а самому себе)

Такие дела.
#опыт
  • 🔥 4
  • 👍 1
  • 🌚 1
More from @dimasshortposts
  1. Oct 2, 2026Post #503
  2. Sep 30, 2026🛤 Путь до Tier1: от чего он зависит В прошлый раз мы гоняли hello world в цикле и увидели…
  3. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  4. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  5. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
  6. Sep 15, 2026🔜 Готовлюсь к DOTNEXT 2026 В прошлом году за две недели до выступления я зачитывал свой д…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →