@last7

Как писать unit-тесты для крупного приложения на go?

Допустим есть некое приложение по структуре похожее на это. То есть имеется несколько пложенных пакетов, включая controllers и его нужно протестировать.

Создаем *_test.go в пакете. Но проблема в том, что при инициализации приложения: создается мап шаблонов, подключение всяких сертификаты из файлов и тд. Пути в них относительные, поэтому если тест находиться в корне - все ОК, но если тест в пакете, из-за специфики запуска тестов в Go, корень запуска теста = путь пакета, они не загружаются. Нашел что я такой не один. Но оно до сих пор кажется мне не каноничным и не красивым.

Долго лазил по гихабу, но не нашел крупного веб-приложения хотя бы на 50% покрытым тестами.

От сюда возник вопрос: кто как тестирует вложенные пакеты, если в них есть зависимость открытия файлов? Да и вообще крупные приложения.

Спасибо
  • Вопрос задан
  • 1467 просмотров
Решения вопроса 1
sim3x
@sim3x
По определению, юнит-тесты тестируют свой кусочек и не смотрят на приложение вцелом и даже на модуль. Они должны мокать все внешние запросы и подсовывать заранее определенные ответы

А функциональный тест вполне можно и в корень проекта положить
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@ivahaev
Программист, связист и просто хороший человек
Есть несколько подходов.
Один из них – тестировать только публичные методы пакетов, а файлы тестов держать в корне проекта.

Второй, и, мне кажется, более правильный – снижать связанность пакетов. Методы делать проще и более абстрактными, чтобы их было легче тестировать.
Ответ написан
@xabesawiv
https://speakerdeck.com/mitchellh/advanced-testing...
Обсуждение на русском - тут
devzen.ru/episode-0095
В том числе и по интересующему вас вопросу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы