Tag Archive: golang

Поднятие Docker контейнеров в тестах с Go и Dockertest

Для запуска интеграционных тестов в Golang часто требуются внешние зависимости в виде базы данных, брокера сообщений либо еще каких-то сторонних компонентов.В итоге для поднятия внешних сервисов мы используем Docker и пишем docker-compose.yml файл который выглядит как-то так:

Далее до…
Read more

Golang — использование envconfig для environment variables

Для работы с переменными окружения в Golang без использования библиотеки envconfig просто не обойтись:

Библиотека также поддерживает default значения, required флаги, custom декодеры и многое многое другое.

Golang — Mock для sqlx драйвера базы данных

Для написания юнит тестов часто требуется «мокать» часть зависимостей, одна из самых распространенных — соединение и операции с базой данных. Если нет возможности использовать внедрение зависимости и использовать интерфейсы типа ExecerContext на входе функции то в дело вступают не совсем чистые…
Read more

Шаблон Golang table testing

Допустим у нас имеется некая функция:

Подготовим тесты на эту функцию:

При помощи нехитрой конструкции можно написать неплохие table тесты, которые легко обновлять и добавлять новые кейсы.

Golang — Squirrel SQL Query Generator

Пример удобной библиотеки для генерации SQL кода в Golang. Нет необходимости писать большие и сложные sprintf и делать экранирование вручную. Просто воспользуемся удобными синтаксисом библиотеки squirrel. Для начала:

Теперь допустим нам нужно добавить новую запись в нашу postgres табличку….
Read more

Production ready Dockerfile для Go приложения

Ничего лишнего, только пример хорошего Dockerfile для Go приложения при помощи multi-stage build:

В следующем сниппете покажу пример Makefile для production ready Golang приложения.  

Golang пример unmarshal json в map

Данный снипет показывает пример работы с json структурой типа:

Данный json прилетает нам из структуры resp.Body. Далее для создания новой структуры Endpoint с полями Url и StatusCode мы итерируем по полученному словарю и выводим на экран. В примере…
Read more

Golang пример http клиента с Basic авторизацией

Пример использования стандартного http клиента для проведения GET запросов с Basic авторизацией:

 

aleksandrzhiliaev/checker — мониторинг для веб сайта

Checker —  простейшая библиотека на Go, опрашивающая заданный http адрес с некоторым заданным периодом времени и отправляющая метрики на различные бекенды в зависимости от конфигурации: stdout — отправка названия сайта и статус кода сервиса StatsD — отправка метрики формата: example_com.status_code…
Read more

Monkey patching в Golang

Наткнулся на очень интересную библиотеку, позволяющую переопределять функции и методы у объектов для написания юнит тестов перед компиляцией. В PHP, Ruby или Python это делается довольно просто парой строк. Т.к го все же язык компилируемый и со строгой типизацией тут…
Read more