Sobes.tech
Back to questions
Junior — Middle
84

Каким образом вы проводили тестирование кода, который взаимодействует с базой данных?

Companies where asked
Lamoda Tech

Answer from AI

sobes.tech AI

Для тестирования кода, взаимодействующего с базой данных в Go, применяют несколько подходов:

  • Мокирование базы данных — создают интерфейсы для работы с БД и подменяют реальные вызовы на моки, чтобы тестировать логику без реальной БД.
  • Тестовые базы данных — используют отдельную тестовую БД или in-memory базы (например, SQLite), чтобы выполнять интеграционные тесты.
  • Транзакции с откатом — в тестах открывают транзакцию, выполняют операции, а в конце откатывают изменения, чтобы не загрязнять тестовую среду.

Пример использования интерфейса и моков:

// Интерфейс для работы с БД
type UserRepository interface {
    GetUser(id int) (*User, error)
}

// В тестах создаём мок
type MockUserRepo struct {}
func (m *MockUserRepo) GetUser(id int) (*User, error) {
    return &User{ID: id, Name: "Test"}, nil
}

Такой подход позволяет изолировать тестируемый код от реальной базы.