繁体   English   中英

单元测试 Smtpclient 模拟发送方法

[英]Unit testing Smtpclient mock Send method

有没有办法模拟Send(System.Net.Mail.MailMessage message)方法在调用时什么都不做? 我正在使用 2 个参数构造函数创建 SmtpClient 并发送如下消息

using(var client = new SmtpClient(host, port)){
client.Send(message);
}

我真的不需要测试它,只想跳过它并继续前进。 对于测试,我使用 XUnit 和 Moq。

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

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);
    }
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM