moq
Se moquer des interfaces communes
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