Sobes.tech
Junior — Middle

Jak przeprowadziłeś testy kodu, który współdziała z bazą danych?

sobes.tech AI

Odpowiedź od AI

Aby przetestować kod współpracujący z bazą danych w Go, stosuje się kilka podejść:

  • Mockowanie bazy danych — tworzenie interfejsów do pracy z bazą danych i zastępowanie rzeczywistych wywołań mockami, aby testować logikę bez prawdziwej bazy.
  • Bazy danych testowe — używanie osobnej bazy testowej lub baz w pamięci (np. SQLite) do przeprowadzania testów integracyjnych.
  • Transakcje z cofnięciem — w testach otwiera się transakcję, wykonuje operacje, a na końcu cofa zmiany, aby nie zanieczyścić środowiska testowego.

Przykład użycia interfejsu i mocków:

// Interfejs do pracy z bazą danych
type UserRepository interface {
    GetUser(id int) (*User, error)
}

// Tworzymy mock w testach
type MockUserRepo struct {}
func (m *MockUserRepo) GetUser(id int) (*User, error) {
    return &User{ID: id, Name: "Test"}, nil
}

Taki sposób pozwala odizolować testowany kod od rzeczywistej bazy danych.