I am trying to test if the parameters passed to an interface are correct:
MailMessage expectedMailMessage = new MailMessage();
var mailerMock = new Mock<IMailSender>();
mailerMock.Setup(m => m.Send(expectedMailMessage)).Verifiable();
Mailer mailer = new Mailer(mailerMock.Object);
mailer.Send(expectedMailMessage);
mailerMock.Verify(m => m.Send(expectedMailMessage), Times.Once());
Mailer class:
public class Mailer : IMailer
{
private readonly IMailSender _mailSender;
public Mailer(IMailSender mailSender)
{
_mailSender = mailSender;
}
public void Send(MailMessage mailMessage)
{
_mailSender.Send(mailMessage);
}
}
But still this fails, problem is that it is very hard to debug. I checked if there is some random Guid generated or a date is set, but I couldn’t find anything.
After some fiddling I gave up and come up with this:
Also easier to see on which property it is failing.