moq
Spottende gemeenschappelijke interfaces
Zoeken…
Mocking IEnumerable
Het bespotten van een interface die van IEnumerable
om ingeblikte gegevens te retourneren, is vrij eenvoudig. Uitgaande van de volgende klassen:
public class DataClass
{
public int Id { get; set; }
}
public interface IEnumerableClass : IEnumerable<DataClass>
{
}
De volgende aanpak kan worden gevolgd. Maak eerst een lijst met de informatie die moet worden geretourneerd door de mock:
IList<DataClass> list = new List<DataClass>();
for (int i = 0; i < 10; i++)
{
list.Add(new DataClass { Id = 20 + i });
}
Maak vervolgens een proef van de klasse IEnumerable
en stel de GetEnumerator
methode in om in plaats daarvan de lijst van de lijst te retourneren:
var mock = new Mock<IEnumerableClass>();
mock.Setup(x => x.GetEnumerator()).Returns(list.GetEnumerator());
Dit kan als volgt worden gevalideerd:
int expected = 20;
foreach (var i in mock.Object)
{
Assert.AreEqual(expected++, i.Id);
}
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow