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.