Sobes.tech
Junior — Middle

Πώς δοκιμάσατε τον κώδικα που αλληλεπιδρά με τη βάση δεδομένων;

sobes.tech AI

Απάντηση από AI

Για τον έλεγχο του κώδικα που αλληλεπιδρά με τη βάση δεδομένων σε Go, χρησιμοποιούνται διάφορες προσεγγίσεις:

  • Mocking της βάσης δεδομένων — δημιουργία διεπαφών για την εργασία με τη βάση δεδομένων και αντικατάσταση των πραγματικών κλήσεων με mocks, ώστε να δοκιμάζεται η λογική χωρίς μια πραγματική βάση δεδομένων.
  • Βάσεις δεδομένων δοκιμών — χρήση ξεχωριστής βάσης δεδομένων δοκιμών ή βάσεων σε μνήμη (π.χ., SQLite) για ενσωματωμένες δοκιμές.
  • Μεταφορές με rollback — στις δοκιμές, ανοίγεται μια μεταφορά, εκτελούνται οι λειτουργίες και στο τέλος γίνεται rollback για να μην μολυνθεί το περιβάλλον δοκιμών.

Παράδειγμα χρήσης διεπαφής και mocks:

// Διεπαφή για εργασία με τη βάση δεδομένων
type UserRepository interface {
    GetUser(id int) (*User, error)
}

// Στις δοκιμές, δημιουργούμε mock
type MockUserRepo struct {}
func (m *MockUserRepo) GetUser(id int) (*User, error) {
    return &User{ID: id, Name: "Test"}, nil
}

Αυτή η προσέγγιση επιτρέπει την απομόνωση του κώδικα που δοκιμάζεται από τη πραγματική βάση δεδομένων.