Назад к вопросам
Яндекс
Junior — Middle
80
Каким образом вы осуществляли тестирование и верификацию корректности выполненных запросов?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для тестирования и верификации корректности выполненных запросов в Go обычно применяю следующие методы:
- Юнит-тесты: Использую пакет
testingдля написания тестов, которые проверяют правильность формирования и выполнения запросов. - Мокирование базы данных: С помощью библиотек, например,
sqlmock, можно имитировать поведение базы данных и проверять, что запросы формируются корректно и обрабатываются ожидаемо. - Логирование: Включаю логирование SQL-запросов для отладки и анализа.
- Проверка результатов: Сравниваю полученные данные с ожидаемыми, чтобы убедиться в корректности.
Пример простого теста с использованием sqlmock:
import (
"database/sql"
"testing"
"github.com/DATA-DOG/go-sqlmock"
)
func TestGetUserByID(t *testing.T) {
db, mock, err := sqlmock.New()
if err != nil {
t.Fatalf("error opening stub database: %s", err)
}
defer db.Close()
rows := sqlmock.NewRows([]string{"id", "name"}).AddRow(1, "John")
mock.ExpectQuery("SELECT id, name FROM users WHERE id = ?").WithArgs(1).WillReturnRows(rows)
user, err := GetUserByID(db, 1)
if err != nil {
t.Errorf("unexpected error: %s", err)
}
if user.Name != "John" {
t.Errorf("expected name John, got %s", user.Name)
}
if err := mock.ExpectationsWereMet(); err != nil {
t.Errorf("there were unfulfilled expectations: %s", err)
}
}
Такой подход позволяет убедиться, что запросы формируются и обрабатываются корректно без необходимости подключения к реальной базе.