Tag Archive: golang

Отправка Telegram сообщений с Go

При помощи библиотеки go-telegram-bot-api достаточно легко написать свою программу на Go для отправки сообщений в Telegram. Библиотека имеет множество реализованных методов для работы c Telegram API — отправка сообщений, загрузка изображений и медиафайлов, ответ на сообщения в группах и отслеживание…
Read more

Автообновление Go проектов при помощи github-selfupdate

go-github-selfupdate это довольно хорошая реализация поиска и обновлений новых версий приложения если вы используете GitHub в качестве хостинга релизов. Библиотека поддерживает поиск новых semver релизов через GiHub releases. Подключить поиск и загрузку новых обновлений достаточно просто: Ваш проект должен находиться на…
Read more

Golang — поднятие тест сервера при unit тестах

func TestHTTP(t *testing.T) { go func() { serverMux := http.NewServeMux() serverMux.HandleFunc(«/», func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, «Pong!») }) err := http.ListenAndServe(«:8082», serverMux) if err != nil { panic(«ListenAndServe: » + err.Error()) } }() URL = «http://localhost:8082» assert.NoError(t, myTestServerFunc()) }…
Read more

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

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

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

Для работы с переменными окружения в Golang без использования библиотеки envconfig просто не обойтись: //AppConfig struct to manage configuration env vars type AppConfig struct { DBHost string `envconfig:»DB_HOST» required:»true»` DBPort int `envconfig:»DB_PORT» required:»true»` DBUser string `envconfig:»DB_USER» required:»true»` DBName string `envconfig:»DB_NAME»…
Read more

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

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

Шаблон Golang table testing

Допустим у нас имеется некая функция: NormalizeEndpoint(endpointBefore string) string Подготовим тесты на эту функцию: func TestNormalizeEndpoints(t *testing.T) { type runnerTest struct { name string endpointBefore string endpointAfter string } var tests = []runnerTest{ {«Test 1», «https://case1.com», «case1»}, {«Test 2», «https://case2.com»,…
Read more

Golang — Squirrel SQL Query Generator

Пример удобной библиотеки для генерации SQL кода в Golang. Нет необходимости писать большие и сложные sprintf и делать экранирование вручную. Просто воспользуемся удобными синтаксисом библиотеки squirrel. Для начала: import «github.com/Masterminds/squirrel» Теперь допустим нам нужно добавить новую запись в нашу postgres…
Read more