Avatar ·

Wie man Mocks für Funktionen in Go beim Unit-Testing richtig erstellt

Hallo! Ich habe angefangen, Go zu lernen, und versuche, Unit-Tests für mein Projekt zu schreiben. Ich bin auf ein Problem gestoßen: Ich habe eine Funktion, die einen externen Service aufruft (z. B. eine E-Mail sendet oder eine HTTP-Anfrage macht). In den Tests möchte ich diese Services nicht wirklich aufrufen, also muss ich einen Mock erstellen. Hier ist ein vereinfachtes Beispiel meines Codes: ```go package main import ( "fmt" "net/smtp" ) type EmailSender struct{} func (e *EmailSender) SendEmail(to, subject, body string) error { // Tatsächliches Senden einer E-Mail über SMTP err := smtp.SendMail("smtp.example.com:587", nil, "from@example.com", []string{to}, []byte(body)) if err != nil { return fmt.Errorf("failed to send email: %w", err) } return nil } func NotifyUser(sender *EmailSender, userEmail string) error { return sender.SendEmail(userEmail, "Welcome", "Hello! Thanks for registering.") } ``` Ich habe über Interfaces und Mocks gelesen, verstehe aber nicht, wie ich den Code richtig organisieren soll. Muss ich ein