2009-02-23 4 views
6

Sto cercando di iniziare con Moq e di avere difficoltà a trovare risorse valide per fare ciò di cui ho bisogno.Dataset di simulazione con Moq

Ho una classe di interfaccia dati che ha un metodo Get che restituisce un set di dati tramite stored procedure. Questo è il modo in cui è stato scritto il codice e non posso cambiarlo al momento, quindi deve essere fatto in questo modo.

Voglio testare questa classe Mocking del set di dati e restituire i dati in modo da non dover effettuare effettivamente una chiamata al database.

Qualcuno sta facendo questo e, se sì, dove è un buon posto per iniziare a farlo?

risposta

7

Non è necessaria una connessione al database per compilare un DataSet. Puoi prenderlo in giro così:

IDataInterface di = new Mock<IDataInterface>(); 
DataSet mockDataSet = CreateMockDataSet(); 
di.Expect(x => x.Get()).Returns(mockDataSet); 
something.UseDataInterface(di.Object); 

Riempire in un finto DataSet è piuttosto doloroso, però. Se lo faccio, in genere metto un'interfaccia della facciata davanti al DataSet restituito, che è più facile da deridere. O cambio il codice per utilizzare un DataTable, che è più facile da compilare.

In alternativa, utilizzare un database incorporato, come SQLite o SQL Server CE, per i test dell'unità.

+1

um ... quindi cosa fa CreateMockDataSet()? Ho pensato che fosse la domanda –

+1

Buon punto. Credo che l'OP pensasse di aver bisogno di prendere in giro l'interfaccia di 'DataSet', e la mia risposta sottolinea che questo non è necessario. 'CreateMockDataSet()' creerebbe solo un gruppo di istanze 'DataTable' e le inserirà nel' DataSet' come se fossero state restituite dal database reale. –