public void SendAlert() { // Arrange var fixture = new Fixture(); var customer = fixture.Create <Customer>(); var customerRepository = new Mock <ICustomerRepository>(); customerRepository.Setup(s => s.GetCustomer(customer.CustomerReference)).Returns(customer).Verifiable(); var smtpClient = new Mock <ISmtpClient>(); var message = "A message"; smtpClient.Setup(s => s.SendMail(customer.Email, message)).Returns(true).Verifiable(); var sut = new TestableAlert(smtpClient.Object, customerRepository.Object); // Act var result = sut.SendAlert(customer.CustomerReference, message); // Assert Assert.IsTrue(result); customerRepository.VerifyAll(); // or without marking the Stub as Verifiable customerRepository.Verify(s => s.GetCustomer(customer.CustomerReference), Times.Once()); }
public void SendAlert() { // Arrange var sut = new TestableAlert(new FakeSmtpClient(), new FakeCustomerRepository()); // Act var result = sut.SendAlert("someReference", "A message"); // Assert Assert.IsTrue(result); // We know our fake SendMail methods return value was bubbled up, // but what about the parameters in the calls to the fake objects? }