Junior — Middle
Чӣ гуна тест гузарондед коде, ки бо базаи додаҳо ҳамкорӣ мекунад؟
sobes.tech AI
Ҷавоб аз AI
Для тестване на кода, който взаимодейства с база данни в Go, се използват няколко подхода:
- Мокиране на базата данни — създаване на интерфейси за работа с базата данни и заместване на реалните извиквания с мока, за да се тества логиката без реална база данни.
- Тестови бази данни — използване на отделна тестова база данни или бази в памет (например SQLite) за изпълнение на интеграционни тестове.
- Транзакции с rollback — в тестовете се отваря транзакция, извършват се операции, а в края се отменят промените, за да не се замърсява тестовата среда.
Пример за използване на интерфейс и мока:
// Интерфейс за работа с базата данни
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
}
Този подход позволява изолиране на тестирания код от реалната база данни.