что нужно использовать интеграционные тесты, предварительно создав какую-нибудь независимую бд, например в докере. Иначе пишут, что надо мокать бд и тестировать дальше в формате unit тестов(этот подход не до конца понимаю). Подскажите, куда копать? Как правильно тестировать api? Всякие искуственные примеры, когда у нас есть 1 табличка на 2 поля, это, конечно, хорошо. Но на вопросы как тестировать api, где существуют разнообразные связи между сущностями и прочее подобные примеры ответов не дают. Направьте на путь истины! Заранее, спасибо
У всех разные и порою противоположные мнения на этот счет. Стоит все же тестировать то, что требует тестов. Если у вас нагенерированное апи без толковой бизнес логики, смоук тесты вполне подойдут. А так стоит тестировать отдельно репозитории, читай адаптеры для бд, с бд, все остальное с моками в стиле "тыкнуть туда" и "получить то", для того чтобы убыстрить время прохождения тестов и выявить проблемы с интеграцией отдельно от вашей бизнес логики. Но, опять же, если проект небольшой и сосредоточен на хранении информации, то можно не заморачиваться с моками, всегда их можно ежели чего просунуть куда нужно. Ежели хитрая логика на первом месте, то начать стоит с нее, потом уже подключая базы данных по мере необходимости.
Если вопрос был о пакетах тоже, то советую для моков стандартный golang/gomock, он божественен, так же sqlmock от data-dog очень хорош для sql штук. Тестировать стандартными средствами, плюс генерировать тейбл тесты с помощью gotests.
про моки забудьте. БД — берите срез прода/стейджа, с небольшой частью данных для быстрого разворачивания. тестировать в формате %контекст%-%действие%-%проверка результата%. Действие — ручка API, первое и последнее — ответ и БД.
Обсуждают сегодня