2011-12-03 20 views
6

¿Hay alguna manera sensata de rescindir/simular los resultados de una llamada al IDocumentSession.Query()?Pruebas unitarias Consultas de RavenDb

Tengo un comando en el que me gustaría verificar que se invocan métodos sobre los objetos (es decir, que la "unidad" que se prueba es el comando NO los objetos que el comando orquesta). No puedo guardar los objetos de Mock (a través de RhinoMocks) en una instancia de db incrustada, por lo que en este momento me veo obligado a verificar el estado de los objetos a los que se llama, en lugar de simplemente verificar que se han invocado los métodos correctos.

Gracias, Matt

Respuesta

6

usted es mejor cuando se utiliza de EmbeddableDocumentStore { RunInMemory = true} para las pruebas unitarias. Dicho esto, IDocumentSession debe ser muy fácil de simular.

+0

Gracias Ayende, el problema es utilizar un EmbeddedDocumentStore significa que tengo que usar objetos reales que no se burlan. IDocumentSession es realmente muy fácil de burlar, IRavenQueryable no tanto. – mattcole

+0

@mattcole ¿Qué hay de malo con el uso de 'EmbeddableDocumentStore {RunInMemory = true}' ?? ¿Por qué quieres burlar el 'IDocumentSession'? Sí, ejecutando 'EmbeddableDocumentStore' es un poco más lento que uno burlado ... pero estoy bastante seguro de que * uno * de los principales motivos por los que se creó' EmbeddableDocumentStore' fue para pruebas unitarias. –

+1

Estoy peleando 2 cosas en mi cabeza en este momento: 1. No me digas que no me burle, es un mal olor para mí que no puedo. 2. Cuando utilizo EmbeddableDocumentStore, las pruebas se ejecutan muy despacio, ¡así que me gustaría burlarme! – Ronnie