Zoeken…


Auto stubbing eigenschappen

Soms wil je een klasse of een interface bespotten en de eigenschappen ervan laten gedragen alsof het eenvoudige getters en setters zijn. Omdat dit een veel voorkomende vereiste is, biedt Moq een snelkoppeling om alle eigenschappen van een mock in te stellen om waarden op te slaan en op te halen:

// 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);

Voor de volledigheid is de code die wordt getest hieronder

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

Woningen met particuliere bewoners

Soms wil je een model van een klasse met een privésetter maken:

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

Of een interface die alleen een getter definieert:

public interface MockTarget
{
    string PropertyToMock { get; }
}

In beide gevallen kunt u de setter negeren en eenvoudig de eigenschap-getter instellen om een gewenste waarde te retourneren:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow