示例#1
0
        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());
        }
示例#2
0
        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?
        }