单元测试 Smtpclient 模拟 Send 方法

时间:2021-02-10 19:43:31

标签: c# .net unit-testing mocking moq

有没有办法模拟 | name | node | points | ... | snap_date | snap_hour | snap_mins | Jane | 1 | 2 | ... | 1/1/21 | 22 | 0 | Jane | 1 | 4 | ... | 1/1/21 | 22 | 30 | Jane | 1 | 1 | ... | 1/1/21 | 23 | 0 | Jane | 1 | 3 | ... | 1/1/21 | 23 | 30 | Jane | 3 | 2 | ... | 1/1/21 | 23 | 0 | Jane | 3 | 4 | ... | 1/1/21 | 23 | 30 方法在调用时什么都不做? 我正在使用 2 个参数构造函数创建 SmtpClient 并发送类似

的消息
Send(System.Net.Mail.MailMessage message)

我真的不需要测试它,只是想跳过它并继续。 为了测试,我使用 XUnit 和 Moq。

1 个答案:

答案 0 :(得分:0)

看起来您需要实现任何实现相同方法的包装器。
例如:

public interface ISmtpClientWrapper
{
    void Send(MailMessage message);
}

public class SmtpClientWrapper : ISmtpClientWrapper
{
    private readonly SmtpClient _smtpClient;
    public SmtpClientWrapper()
    {
        _smtpClient = new SmtpClient("xxx", 25);
    }

    public void Send(MailMessage message)
    {
        _smtpClient.Send(message);
    }
}

然后在主类的构造函数中将其作为参数传递。

在这种情况下,您可以使用任何您想要的模拟框架。