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

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

Патчим открытие соединения sqlx.Connect при помощи библиотеки bou.ke/monkey:

Далее патчим defer sqlx.Close:

Ну и при выполнении операций, sqlx.Exec:

Теперь мы можем писать тесты на часть кода, которая работает напрямую с базой данных:

 

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.