Avatar ·

如何在Go单元测试中正确创建函数的mock?

你好!我开始学习Go,并尝试为我的项目编写单元测试。我遇到了一个问题:我有一个调用外部服务(例如发送电子邮件或进行HTTP请求)的函数。在测试中,我不想真正调用这些服务,因此需要创建一个mock。 以下是我的代码的简化示例: ```go package main import ( "fmt" "net/smtp" ) type EmailSender struct{} func (e *EmailSender) SendEmail(to, subject, body string) error { // 通过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.") } ``` 我读过关于接口和mock的内容,但不知道如何正确组织代码。是否需要创建