嘲笑新实例,我想嘲笑都MailMessage
和SmptpClient
如何使用起订量
public void SendEmail(string emailAddress, string subject, string body)
{
using (var mail = new MailMessage(NoReplyEmailAddress, emailAddress))
{
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
using (var client = new SmtpClient())
{
client.Host = SmtpHost;
client.Port = SmtpPort;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(mail);
}
}
}
和我的测试方法测试使用MOQ下面的方法是:
public void TestSendEmail()
{
Mock<MailMessage> mailMessageMock = new Mock<MailMessage>();
MailMessage message = (MailMessage)mailMessageMock.Setup(m => new MailMessage()).Returns(mailMessageMock.Object);
Mock<SmtpClient> smtpClientMock = new Mock<SmtpClient>();
smtpClientMock.Setup(s => new SmtpClient()).Returns(smtpClientMock.Object);
EmailService emailService = new EmailService();
emailService.SendEmail("[email protected]","Test Mail", "Content");
mailMessageMock.Verify(m => m.Subject);
mailMessageMock.Verify(m => m.Body);
mailMessageMock.Verify(m => m.IsBodyHtml);
smtpClientMock.Verify(s=>s.Host);
smtpClientMock.Verify(s=>s.Port);
smtpClientMock.Verify(s=>s.DeliveryMethod);
smtpClientMock.Verify(s=>s.Send(message));
}
但它不工作是无论如何要做到这一点?
你可以阐述* “不工作” *? –
我们应该如何知道你的意思是“它不工作”?你想让我们猜测吗? –
如果它们在方法内部出现,你就不能嘲笑它们。它们必须作为依赖项注入,或者作为可以被嘲笑的虚拟方法分离出来。我在这里有一些指导:https://contrivedexample.com/2016/11/26/testing-the-un-testable/ – Crowcoder