2009-04-02 31 views
19

Estoy utilizando el marco de entidad para acceder a mi base de datos y quiero simular el contexto de la base de datos dentro de las pruebas de mi unidad para poder probar mis clases de nivel medio sin dependencia de datos reales. Sé que no soy el primero en preguntar acerca de este (Mocking an Entity Framework Model), pero después de buscar en Google tengo el instinto de que podría ser posible crear una instancia del contexto basado solo en los metadatos del modelo.Mocking Entity Framework Context

¿Alguien ha podido hacer esto?

+0

Incluso al crear otra capa, ¿cómo realizaría la operación de salvar, ya que EF usa mMamDbEntities.SaveChanges(); después de que la referencia de la entidad se haya configurado –

+0

Consulte mi respuesta a la pregunta [Base de datos de Mock Entity Framework] (http://stackoverflow.com/questions/6087857/mock-entity-framework-database/14406546#14406546). Se puede crear un contexto de objeto simulado a partir de su modelo de entidad utilizando una plantilla T4. Esta es la forma en que se crean las clases de POCO regulares, y se puede ampliar con bastante facilidad para crear un contexto de objeto de prueba e interfaz para que sea intercambiable con su contexto de objeto concreto. – NightOwl888

Respuesta

6

Puede hacerlo con solo metadatos, hay un buen artículo sobre él, y la unidad de pruebas EF en general, here.

7

Una forma bien conocida de hacer esto es usar el Repository pattern. Esto actúa como una capa sobre su implementación concreta de acceso a datos y proporciona un lugar para inyectar dobles de prueba.

+1

Incluso con el patrón de repositorio (que definitivamente es una buena idea), puede que desee mantener un ObjectContext para aprovecharlo. –

+1

Los patrones de repositorio que he visto para EF usan el ObjectContext internamente. –

+3

El ObjectContext generalmente se debe inyectar en los repositorios como una dependencia. El repositorio y la unidad de trabajo son ortogonales. –