Sök…


Auto-stoppningsegenskaper

Ibland vill du håna en klass eller ett gränssnitt och låta dess egenskaper uppträda som om de var enkla getters och setters. Eftersom detta är ett vanligt krav, tillhandahåller Moq en genvägsmetod för att ställa in alla egenskaper hos ett håravfall för att lagra och hämta värden:

// SetupAllProperties tells mock to implement setter/getter funcationality
var userMock = new Mock<IUser>().SetupAllProperties();

// Invoke the code to test
SetPropertiesOfUser(userMock.Object);

// Validate properties have been set
Assert.AreEqual(5, userMock.Object.Id);
Assert.AreEqual("SomeName", userMock.Object.Name);

För fullständighet är koden som testas nedan

void SetPropertiesOfUser(IUser user)
{
    user.Id = 5;
    user.Name = "SomeName";
}

Fastigheter med privata bosättare

Ibland vill du skapa en håna från en klass som har en privat setter:

public class MockTarget
{
    public virtual string PropertyToMock { get; private set; }
}

Eller ett gränssnitt som bara definierar en getter:

public interface MockTarget
{
    string PropertyToMock { get; }
}

I båda fallen kan du ignorera setteren och helt enkelt ställa in fastighetsgittaren för att returnera ett önskat värde:

var mock = new Mock<MockTarget>();
mock.SetupGet(x => x.PropertyToMock).Returns("ExpectedValue");

Assert.AreEqual("ExpectedValue", mock.Object.PropertyToMock);


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow