Sobes.tech
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
}

Този подход позволява изолиране на тестирания код от реалната база данни.