Comment créer correctement des mocks pour les fonctions en Go lors des tests unitaires ?
Bonjour ! J'ai commencé à étudier Go et j'essaie d'écrire des tests unitaires pour mon projet. Je suis confronté à un problème : j'ai une fonction qui appelle un service externe (par exemple, envoie un email ou effectue une requête HTTP). Dans les tests, je ne veux pas réellement appeler ces services, donc je dois créer un mock.
Voici un exemple simplifié de mon code :
```go
package main
import (
"fmt"
"net/smtp"
)
type EmailSender struct{}
func (e *EmailSender) SendEmail(to, subject, body string) error {
// Envoi réel d'email via 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.")
}
```
J'ai lu sur les interfaces et les mocks, mais je ne comprends pas comment organiser correctement le code. Dois-je créer