Sobes.tech
Назад к вопросам
Junior — Middle
81

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

Компании, где спрашивали
Lamoda Tech

Ответ от нейросети

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
}

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