2011-12-03 14 views
6

Esiste un modo ragionevole per bloccare/deridere i risultati di una chiamata a IDocumentSession.Query()?Test dell'unità Domande RavenDb

Ho un comando in cui mi piacerebbe verificare che i metodi siano chiamati sugli oggetti (cioè "l'unità" in fase di test è il comando NOT degli oggetti che il comando orchestra). Non riesco a salvare oggetti Mock (tramite RhinoMocks) in un'istanza di db incorporata, quindi al momento sono costretto a verificare lo stato degli oggetti chiamati, piuttosto che verificare semplicemente che siano stati chiamati i metodi corretti.

Grazie, Matt

risposta

6

Sei meglio di quando si utilizza EmbeddableDocumentStore { RunInMemory = true} per unit testing. Detto questo, IDocumentSession dovrebbe essere molto facile da deridere.

+0

Grazie a Ayende, il problema è usare un EmbeddedDocumentStore significa che devo usare oggetti reali e non mock. IDocumentSession è davvero molto facile da deridere, IRavenQueryable non così tanto. – mattcole

+0

@mattcole Cosa c'è di sbagliato nell'uso di 'EmbeddableDocumentStore {RunInMemory = true}' ?? Perché vuoi prendere in giro la 'IDocumentSession'? Sì .. l'esecuzione di 'EmbeddableDocumentStore' è leggermente più lenta di una beffa .. ma sono abbastanza sicuro che * uno * dei motivi principali per cui è stato creato' EmbeddableDocumentStore', era per il test delle unità. –

+1

Al momento sto combattendo 2 cose nella mia testa: 1. Non dirmi di non prendere in giro - è un cattivo odore per me che non posso. 2. Quando usi EmbeddableDocumentStore, i test sono in esecuzione molto lentamente - quindi mi piacerebbe prendere in giro! – Ronnie