Pregunta

Considere lo siguiente:

new SUT(null, null, new List<IObjectBeingMocked>() { mockObjectOne.Object, mockObjectTwo.Object })

Mi SUT (Sistema bajo prueba) necesita una lista de objetos como tercer parámetro. Estos deben ser simulacros ya que he establecido algunas expectativas sobre ellos.

¿Cómo lo aclararía para eliminar la necesidad de llamar a .Object en cada elemento de la lista? Por lo general, solo hay dos elementos, pero esto podría crecer y, en mi opinión, esto hace que la prueba sea más difícil de leer.

¿Cuál sería la mejor manera de transformar esta lista de objetos simulados en objetos reales de manera fácil y agradable?

¿Fue útil?

Solución

Puede usar el método Mocks.Query () que devolverá una colección de todas las instancias SUT simuladas.
Esta característica existe en la versión beta de moq. Vea los detalles aquí :

Otros consejos

Quizás podría usar métodos de extensión para administrar la creación de listas y la invocación de la propiedad Object para usted.

var list = new List<Mock<Foo>>() { ... };
new SUT( null, null, list.Select( o => o.Object ).ToList() );

Una buena manera de manejar esto es crear un método GetSUT () que lo cree solo una vez en un lugar. Luego, a medida que cambia la creación de SUT, solo tiene que cambiarla en un solo lugar.

Podría introducir variables explicativas (locales) para mayor claridad:

IObjectBeingMocked objectOne = mockObjectOne.Object;
IObjectBeingMocked objectTwo = mockObjectTwo.Object;

new SUT(null, null, new List<IObjectBeingMocked>() { objectOne, objectTwo });

EDITAR: Quizás con nombres mejor elegidos que mi '' objectOne '', '' objectTwo ''. ;)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top