Question

Voici le code:

public interface IAccessPoint
{
    int BackHaulMaximum { get; set; }

    bool BackHaulMaximumReached();
    void EmailNetworkProvider();
}

public class AccessPoint : IAccessPoint
{
    private IMailProvider Mailer { get; set; }

    public AccessPoint(IMailProvider provider)
    {
        this.Mailer = provider ?? new DefaultMailProvider();
    }

    public int BackHaulMaximum { get; set; }

    public bool BackHaulMaximumReached()
    {
        if (BackHaulMaximum > 80)
        {
            EmailNetworkProvider();
            return true;
        }
        return false;
    }


    public void EmailNetworkProvider()
    {
        this.Mailer.SendMail();
    }
}

public interface IMailProvider
{
    void SendMail();
}

public class DefaultMailProvider : IMailProvider
{
    public void SendMail()
    {

    }
}

// Here is the Test, It is not calling EmailNetworkProvider which calls SendMail()

[TestFixture]
public class Tests
{
    [Test]
    public void NetworkProviderShouldBeEmailedWhenBackHaulMaximumIsReached()
    {
        var mailerMock = MockRepository.GenerateMock<IMailProvider>();

        mailerMock.Expect(x => x.SendMail());

        var accessPoint = new AccessPoint(mailerMock);

        accessPoint.BackHaulMaximum = 81;

        Assert.IsTrue(accessPoint.BackHaulMaximumReached());

        mailerMock.VerifyAllExpectations();
    }
}
Était-ce utile?

La solution

Toute amélioration si vous utilisez ce test?

[Test]
public void NetworkProviderShouldBeEmailedWhenBackHaulMaximumIsReached()
{
    var mailerMock = MockRepository.GenerateStub<IMailProvider>();
    var accessPoint = new AccessPoint(mailerMock);

    accessPoint.BackHaulMaximum = 81;

    var actual = accessPoint.BackHaulMaximumReached();

    Assert.AreEqual(true, actual);
    mailerMock.AssertWasCalled(x => x.SendMail());
}

Comme un côté note, BackhaulMaximumReached() est en quelque sorte une conception bizarre. sera effectué à moins que la notification d'un contrôle de consommation, qu'il a été atteint le maximum de distance arrière, quelle que soit la valeur de BackHaulMaximum.

Il est source de confusion sémantiquement aux commandes comingle et les requêtes de cette façon.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top