Sobes.tech
Junior — Middle

Mocks στη δοκιμή και γιατί είναι απαραίτητα

sobes.tech AI

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

Οι mocks (εικονικά αντικείμενα) στη δοκιμή είναι αντικείμενα-ψεύτικα που μιμούνται τη συμπεριφορά των πραγματικών εξαρτήσεων του συστήματος. Είναι απαραίτητα για την απομόνωση του δοκιμαζόμενου κώδικα από εξωτερικά συστατικά, ώστε οι δοκιμές να είναι γρήγορες, αξιόπιστες και αναπαραγόμενες.

Για παράδειγμα, αν μια λειτουργία εξαρτάται από μια βάση δεδομένων, αντί για μια πραγματική σύνδεση, μπορεί να χρησιμοποιηθεί ένα mock που επιστρέφει προκαθορισμένα δεδομένα. Αυτό επιτρέπει τον έλεγχο της λογικής της λειτουργίας χωρίς τον κίνδυνο αποτυχίας λόγω προβλημάτων με τη βάση δεδομένων.

Στη Go, τα mocks δημιουργούνται συχνά με τη χρήση διεπαφών και ειδικών βιβλιοθηκών, όπως το gomock ή το testify/mock.

Παράδειγμα ενός απλού mock στη Go:

// Διεπαφή
 type DB interface {
     GetUser(id int) (User, error)
 }

// Mock
 type MockDB struct {}

 func (m *MockDB) GetUser(id int) (User, error) {
     return User{ID: id, Name: "Test User"}, nil
 }

// Στη δοκιμή
 func TestGetUserName(t *testing.T) {
     db := &MockDB{}
     user, err := db.GetUser(1)
     if err != nil {
         t.Fatal(err)
     }
     if user.Name != "Test User" {
         t.Errorf("μη αναμενόμενο όνομα χρήστη")
     }
 }