c# - setup - Accediendo a los argumentos originales de Expect() al ensamblar el valor en Returns()
moq verify (1)
¿Es posible acceder al parámetro utilizado para hacer una llamada a una expectativa burlada al ensamblar el objeto Returns?
Aquí hay un stub para los objetos involucrados y, dado que, estoy tratando de burlarme de una Colección:
Class CollectionValue {
public Id { get; set; }
}
Class Collection {
private List<CollectionValue> AllValues { get; set; }
public List<CollectionValue> GetById(List<int> ids) {
return AllValues.Where(v => ids.Contains(v.Id));
}
}
Dada una lista de prueba de CollectionValues que se utilizará para el objeto burlado, ¿cómo se hace para configurar una expectativa que manejará todas las permutas posibles de los ID en esa lista de CollectionValues, incluidas las llamadas que combinan ID existentes y ID no existentes? ? Mi problema proviene del deseo de establecer todas las expectativas posibles en una sola llamada; si el acceso al parámetro original no es posible, podría simplemente configurar exactamente la expectativa exacta que quiero probar en una llamada dada cada vez.
Esto es lo que esperaba hacer, ¿dónde "???" representa dónde sería útil tener acceso al parámetro utilizado para llamar a GetById (el que calificó la restricción It.IsAny):
CollectionMock.Expect(c => c.GetById(It.IsAny<List<int>>())).Returns(???);
De la guía de inicio rápido moq:
// access invocation arguments when returning a value
mock.Setup(x => x.Execute(It.IsAny<string>()))
.Returns((string s) => s.ToLower());
Lo que sugiere por lo tanto que puede completar su ??? como
CollectionMock.Expect(c => c.GetById(It.IsAny<List<int>>()))
.Returns((List<int> l) => //Do some stuff with l
);