Avatar ·

Cómo crear correctamente mocks para funciones en Go en pruebas unitarias

¡Hola! He empezado a aprender Go y estoy intentando escribir unit tests para mi proyecto. Me encontré con un problema: tengo una función que llama a un servicio externo (por ejemplo, envía un email o hace una solicitud HTTP). En las pruebas no quiero llamar realmente a estos servicios, por lo que necesito crear un mock. Aquí tienes un ejemplo simplificado de mi código: ```go package main import ( "fmt" "net/smtp" ) type EmailSender struct{} func (e *EmailSender) SendEmail(to, subject, body string) error { // Envío real de email a través de 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.") } ``` He leído sobre interfaces y mocks, pero no entiendo cómo organizar el código correctamente. ¿Necesito crear un