Назад к вопросам
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
}
Такой подход позволяет изолировать тестируемый код от реальной базы.