Это дипломный проект курса "Go-разработчик" Яндекс.Практикум
Основная цель проекта - тренеровка навыка TDD, coverage 100%
При этом хотелось посмотреть на сколько это будет удобно\неудобно использовать только самописные test doubles
Разработку вел руководствуясь идеями из книги growing object oriented software guided by tests и видео
Основные команды которые нужны для разработки находятся в Makefile
make up
- запуск проекта
make down
- остановка
make down-v
- остановка c очисткой бд
make clean
- полностью очистить все
make @test
- запуск тестов
make @ci-lint
- запуск линтера
Запуск тестов через make @test
хорошо подходит для одноразового запуска. Например, в pipeline. Но в процессе разработки
удобнее зайти в контейнер make bash
и запускать тесты внутри контейнера, не выходя из него make test
.
Так тесты будут отрабатывать чуть быстрее, т.к. не будет каждый раз происходить полной перекомпиляции всего, будет задействован кэш
app/ - основной код проекта
cmd/ - main
test/- интеграционные тесты
app/action - Все действия, которые умеет выполнять приложение
app/service - Сервисы от которых зависят action
app/crypto - Генерация токенов, хеширования паролей
app/dto - Структуры для обмена данными между слоями приложения
app/error - Ошибки
app/http - Все что касается взаимодействия через http
app/migration - миграции
app/storage - код для взаимодействия с хранилищем