Tenemos una aplicación impulsada por datos increíblemente. Queremos probar la aplicación de manera unitaria, pero los desarrolladores se resisten a crear repositorios totalmente falsos debido al volumen de datos. Realmente no los culpo.Pruebas unitarias ASP.NET MVC con datos
Comprenda que estamos actualizando pruebas en una aplicación existente. Si empezáramos de nuevo, haríamos una tonelada de cambios arquitectónicos para facilitar una mejor prueba unitaria con repositorios falsos.
Nos gustaría distribuir un archivo mdf conocido con las pruebas, copiarlo y usarlo para realizar nuestras pruebas. ¿Hay una técnica aprobada para esto? Estoy familiarizado con la incrustación de recursos en el dll de prueba, pero no con la incrustación de mdf's, si eso puede hacerse.
Una solución (tipo de):
acabé teniendo la DataContextWrapper de puesto de Andrew Tokeley de Falsa Linq contextos de datos (http://andrewtokeley.net/archive/2008/07/06/ mocking-linq-to-sql-datacontext.aspx) y creó un FakeDataContext.cs que básicamente es un montón de listas.
me escribió una plantilla T4 verdaderamente bárbara (piensa "SELECT * FROM < # = # table.BaseClass.QualifiedName>") para copiar los datos de una buena base de datos conocida para crear una gran clase llena de cosas como:
List<Customer> _customers = new List<Customer>();
_customers.Add(new Customer(){CustomerId = 1, CustomerName = "ACME"});
etc.
La clase es 25K líneas pero desde t4 escribe todas esas líneas, a quién le importa? Nos permite simular solo el contexto de datos, por lo que podemos probar nuestro linq contra el contexto falso con alguna seguridad razonable de que obtuvimos las consultas correctas. Los desarrolladores originales pusieron un montón de lógica empresarial en el repositorio, por lo que nos permite probar la lógica contra datos buenos conocidos.
Lo que está buscando es una forma de hacer pruebas de integración, que @Jakub ha proporcionado una buena respuesta. ¿Qué marco de prueba estás usando? – mkchandler
Vanilla VS 2010 para conducir nuestras pruebas de unidad (¿pequeña integración?). Cosas como: ¿la capa de membresía bloquea correctamente una cuenta después de 5 contraseñas incorrectas? Eso, y un montón de Selenio para verificar todo el lío funciona la sopa de nueces. –