TGViewer
Разработка с Дарьей Матвеевой Разработка с Дарьей Матвеевой @system_design_explained · 72 subscribers
Post #57 180
В продолжение предыдущей заметки.

Написала юнит тесты к очередной задаче. Тестируемый метод A был приватным, поэтому в тестах пришлось вызывать публичный метод B, вызывающий А. Метод А делает выполняет некую логику и сохраняет результат в БД. Вроде бы все просто, надо дернуть В, и проверить что в БД оказались нужные данные. Но на деле оказалось, что метод B вызывает также методы C, D, E... которые требуют еще данные для собственных расчетов. Когда я замокала все побочные вызовы, код выглядел мягко говоря, не очень понятно.

Решила применить тот же подход, что в предыдущей заметке - сделать интеграционные тесты с testcontainers.
Настроила liquibase, добавила тестовые данные, замокала пару вызовов... Тесты прошли успешно и стали выглядеть гораздо чище. Но в консоли обнаружилось несколько ошибок.
Оказалось, что приложение использует несколько схем в БД, и одна регулярная таска, которая запускается при старте приложения, пытается получить данные таблиц из разных схем и падает. И хоть на работу теста это не влияет, но некрасиво оставлять такие грязные логи. К тому же, если в будущем тесты упадут, это может запутать разработчика, который будет фиксить багу.

Liquibase для работы с кастомными схемами уже был настроен. Дальше разобралась, как настроить несколько датасорсов для работы с разными схемами. Теперь тесты стали полностью эмулировать работу приложения в слое обращения к БД. И можно легко создавать более сложные интеграционные тестовые сценарии.
  • 🔥 4
More from @system_design_explained
  1. Sep 22, 2026Нашла способ, который мгновенно и без дополнительных усилий увеличил мою продуктивность пр…
  2. Mar 27, 2026Я в ВК : https://vk.ru/dev_with_dm
  3. Mar 27, 2026Читаю в последнее время много критики микросервисов, и у меня тоже есть пример, как раз за…
  4. Mar 4, 2026В функциональных языках рекомендуется делать все объекты immutable, и, хотя на работе я пи…
  5. Dec 4, 2025Недавно занималась задачей, где нужно было реализовать оптимистическую блокировку сущности…
  6. Nov 21, 2025Обнаружила еще один плюс TDD. Согласно подходу, я пишу тест, который падает, пишу код, что…
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 →