Recherche…


Se moquer d'IEnumerable

Se moquer d'une interface qui hérite de IEnumerable pour renvoyer des données prédéfinies est assez simple. En supposant les classes suivantes:

public class DataClass
{
    public int Id { get; set; }
}

public interface IEnumerableClass : IEnumerable<DataClass>
{
}

L'approche suivante peut être prise. Tout d'abord, créez une liste contenant les informations à renvoyer par le simulacre:

IList<DataClass> list = new List<DataClass>();
for (int i = 0; i < 10; i++)
{
    list.Add(new DataClass { Id = 20 + i });
}

Créez ensuite une maquette de la classe IEnumerable et configurez sa méthode GetEnumerator pour renvoyer l'énumérateur de la liste à la place:

var mock = new Mock<IEnumerableClass>();
mock.Setup(x => x.GetEnumerator()).Returns(list.GetEnumerator());

Cela peut être validé comme suit:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow