2009-02-23 9 views
6

J'essaie de démarrer avec Moq et j'ai de la difficulté à trouver de bonnes ressources pour faire ce dont j'ai besoin.Jeux de données moqueurs avec Moq

J'ai une classe d'interface de données qui a une méthode Get qui retourne un jeu de données via la procédure stockée. C'est la façon dont le code a été écrit et je ne peux pas le changer pour le moment, donc cela doit être fait de cette façon.

Je souhaite tester cette classe en se moquant de l'ensemble de données et en renvoyant des données pour ne pas avoir à effectuer d'appel de base de données.

Est-ce que quelqu'un fait ceci et si oui où est un bon endroit pour commencer à le faire?

Répondre

7

Vous n'avez pas besoin d'une connexion à une base de données pour remplir un DataSet. Vous pouvez moquez comme ceci:

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

Remplir un DataSet est simulé très douloureux, cependant. Si je fais ceci, je place généralement une interface de façade devant le DataSet renvoyé, ce qui est plus facile à se moquer. Ou je change le code pour utiliser un DataTable, qui est plus facile à remplir.

Vous pouvez également utiliser une base de données intégrée, telle que SQLite ou SQL Server CE, pour vos tests unitaires.

+1

um ... que fait CreateMockDataSet()? Je pensais que c'était la question –

+1

Bon point. Je crois que l'OP pensait qu'ils avaient besoin de se moquer de l'interface de 'DataSet', et ma réponse indique que ce n'est pas nécessaire. 'CreateMockDataSet()' créerait simplement un tas d'instances de 'DataTable' et les placerait dans' DataSet' comme si elles avaient été renvoyées à partir de la base de données réelle. –

Questions connexes