public void SendContactUsEmail_BuildsEmailObject() { // Arrange var mailMessage = new EmailMessage(); _emailService.Setup(r => r.MakeMailMessage(It.IsAny <EmailMessage>())); var emailSenderName = "name"; _configuration.SetupGet(r => r.EmailSenderName).Returns(emailSenderName); var emailSender = "*****@*****.**"; _configuration.SetupGet(r => r.EmailSender).Returns(emailSender); _emailService.Setup(r => r.MakeMailMessage(It.IsAny <EmailMessage>())).Callback <EmailMessage>((mail) => { mailMessage = mail; }); _emailService.Setup(r => r.Send(It.IsAny <MailMessage>())); var emailMessage = new EmailMessage(); emailMessage.SetFrom("[email protected]", "sender"); // Act _sut.SendContactUsEmail(emailMessage); // Assert _configuration.VerifyGet(r => r.EmailSender, Times.Exactly(2)); _configuration.VerifyGet(r => r.EmailSenderName, Times.Exactly(2)); _emailService.Verify(r => r.MakeMailMessage(It.IsAny <EmailMessage>()), Times.Once); _emailService.Verify(r => r.MakeMailMessage(It.IsAny <EmailMessage>()), Times.Once); _emailService.Verify(r => r.Send(It.IsAny <MailMessage>()), Times.Once); Assert.IsNotNull(mailMessage, "email is null"); Assert.IsNotNull(mailMessage.To, "email to is null"); Assert.IsNotNull(mailMessage.From, "email from is null"); Assert.AreEqual(emailSender, mailMessage.To.Email, "email to address"); Assert.AreEqual(emailSenderName, mailMessage.To.Name, "email to name"); Assert.AreEqual(emailSender, mailMessage.From.Email, "email from address"); Assert.AreEqual(emailSenderName, mailMessage.From.Name, "email from name"); Assert.AreEqual("Contact from website", emailMessage.Subject); }