moq
Verspottung gemeinsamer Schnittstellen
Suche…
Verspottung von IEnumerable
Das Verspotten einer Schnittstelle, die von IEnumerable erbt, um IEnumerable Daten zurückzugeben, ist recht einfach. Angenommen die folgenden Klassen:
public class DataClass
{
public int Id { get; set; }
}
public interface IEnumerableClass : IEnumerable<DataClass>
{
}
Es kann folgender Ansatz gewählt werden. Erstellen Sie zunächst eine Liste mit den Informationen, die vom Mock zurückgegeben werden müssen:
IList<DataClass> list = new List<DataClass>();
for (int i = 0; i < 10; i++)
{
list.Add(new DataClass { Id = 20 + i });
}
Erstellen Sie dann einen Mock der IEnumerable Klasse und GetEnumerator seine GetEnumerator Methode ein, um stattdessen den Enumerator der Liste zurückzugeben:
var mock = new Mock<IEnumerableClass>();
mock.Setup(x => x.GetEnumerator()).Returns(list.GetEnumerator());
Dies kann wie folgt bestätigt werden:
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow