2011-12-28 7 views
5

Ni siquiera estoy seguro de si hay una utilidad que lo permita, pero parece ser una necesidad tan común.¿Genera objetos de repositorio simulados de forma rápida utilizando datos en tiempo real? Moq

Hay un programa/biblioteca/componente que generará objetos .NET (repositorios) falsos que producirán algunos datos falsos como ciertas llamadas a la base de datos.

Permítanme elaborar: Si estoy probando un repositorio (no pruebas de unidades, simplemente probando en una ventana de consola) y cuando paso un criterio de selección a mi repositorio, devuelve una lista de objetos. Me encantaría tener la capacidad de capturar esa lista de objetos y convertirla en un código de configuración estática de C# que serviría como configuración para una prueba unitaria. Mis objetos son silenciosamente complejos y lleva mucho tiempo configurarlos correctamente.

¿Esto es posible? Mi equipo está usando Moq & Ninject

Respuesta

1

Puede ser una molestia escribirlos a mano, pero solo tiene que hacerlo bien una vez. Luego, para cada prueba sucesiva, puede modificar las entradas. No sé de todos modos para guardar o capturar sus objetos en tiempo de ejecución. Encontré una página web que habla de automovilismo PUEDE hacer lo que está buscando. http://code.google.com/p/moq-contrib/wiki/Automocking

Cheers, Andrew

1

Hay un par de buenas maneras de hacer frente a esta necesidad.

Primero, podría volver a examinar por qué desea hacer esto. Si necesita tener un objeto complejo completamente configurado para ejecutar su prueba unitaria, podría ser que esté intentando hacer una prueba demasiado. La configuración compleja es un olor de prueba, y podría (o no) indicar que debe hacer un cambio de diseño.

A veces no es posible hacer ese tipo de cambio, y en ocasiones ese olor a prueba realmente no indica un cambio en el diseño. En esos casos, su mejor opción es serializar los objetos (cuando dice "convertirlo a un código C# de configuración estática", que podría actualizarse como "serializarlo como instrucciones de C# para volver a crearlo"). Hay muchas formas relativamente simples de serializar en xml, recomiendo DataContract o XmlSerialization, ambos son muy fáciles de implementar y usar.

Cuestiones relacionadas