¿Cómo probaría la unidad la lógica de la base de datos?

12

Todavía tengo problemas para superar un pequeño problema cuando se trata de TDD.

Necesito un método que obtenga un cierto conjunto de registros de datos filtrados de la capa de datos (linq2SQL). Tenga en cuenta que estoy usando las clases generadas por linq que se generan a partir del DBML. Ahora el problema es que quiero escribir una prueba para esto.

yo:

a) primero inserte los registros en la prueba y luego ejecute el método y pruebe los resultados

b) usar datos que puedan estar en la base de datos. No interesarse por esta lógica porque podría hacer que las cosas se rompan.

c) ¿Qué sugieres?

Neale
fuente

Respuestas:

7

Variación sobre (a).

Tenga una base de datos de prueba o una subsección de la base de datos que pueda usarse para las pruebas. Cuando configure sus pruebas, tenga una rutina que inicialice la base de datos cuando la necesite para comenzar la prueba (esto se puede hacer antes de cada prueba, según corresponda). Esto puede incluir eliminar datos, insertar datos, etc. Luego, ejecute sus pruebas. En la fase de desmontaje, limpia después de ti. Se puede repetir tanto como sea necesario, sin riesgo de interrumpir el sistema en vivo (no es una buena idea probar usando datos en la base de datos que se necesitan para cualquier otra cosa).

Yaakov Ellis
fuente
1
Buena respuesta. Me gusta crear bases de datos desechables usando sqlite. Eso no es posible si desea probar cosas que son específicas de la implementación de la base de datos (como los desencadenantes, por ejemplo), pero permite una configuración / desmontaje rápido e inofensivo.
bogeymin
1
@bogeymin: aún puede configurar una base de datos de prueba con disparadores si lo desea (puede crear toda la base de datos con un script durante FixtureSetup)
Yaakov Ellis