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)
}
}