Sobes.tech
Junior — Middle

Ποιος είναι ο κύριος ρόλος και η εφαρμογή των Mock αντικειμένων στη διαδικασία δοκιμής;

sobes.tech AI

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

Τα αντικείμενα mock χρησιμοποιούνται στις δοκιμές για την προσομοίωση της συμπεριφοράς πραγματικών συστατικών του συστήματος με τα οποία αλληλεπιδρά το δοκιμαζόμενο μονάδα. Ο κύριος ρόλος του mock είναι να απομονώσει τον κώδικα που δοκιμάζεται από εξωτερικές εξαρτήσεις (π.χ. βάσεις δεδομένων, υπηρεσίες δικτύου) ώστε οι δοκιμές να είναι γρήγορες, αξιόπιστες και αναπαραγόμενες.

Η χρήση αντικειμένων mock επιτρέπει:

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

Παράδειγμα σε Go με χρήση διεπαφών και mocks για δοκιμή μιας λειτουργίας που καλεί μια εξωτερική υπηρεσία:

package service

type ExternalAPI interface {
    GetData(id string) (string, error)
}

func ProcessData(api ExternalAPI, id string) (string, error) {
    data, err := api.GetData(id)
    if err != nil {
        return "", err
    }
    return "Processed: " + data, nil
}

// Στη δοκιμή δημιουργούμε mock:

type MockAPI struct {}

func (m *MockAPI) GetData(id string) (string, error) {
    if id == "123" {
        return "mocked data", nil
    }
    return "", fmt.Errorf("not found")
}

// Δοκιμή
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("απροσδόκητο αποτέλεσμα: %v, σφάλμα: %v", result, err)
    }
}