Dépend des cas, mais sur les anciens systèmes où j'ai wan pas d'écraser la base de données j'ai souvent introduire une interface, permet de dire IFooDBManager qui possède des méthodes qui retournent des ADO.Net entités, comme les tables de données ou des ensembles de données. Bien sûr, il n'a pas à être une interface, mais il pourrait être une méthode virtuelle par exemple. Ensuite, dans mes tests, j'utilise une petite API avec une interface fluide que j'ai construit moi-même il y a longtemps, je l'utiliser pour la création d'ensembles de données et les tables et les remplir avec des valeurs de test de sorte que je peux retourner à mes faux.
La fluidité de l'interface ressemble à quelque chose comme ceci:
return DataTableBuilder.Create()
.DefineColumns("a, b")
.AddRow().SetValue("a", 1).SetValue("b", 2).DoneWithRow()
.AddRow().SetValue("a", 10).SetValue("b", 20).DoneWithRow()
.Table
Comme je l'ai dit, c'est juste l'une des approches que j'utilise, et c'est principalement pour des systèmes hérités où je ne veux pas d'introduire de nouvelles dépendances sur la base de travaux et de ces. C'est cependant une technique que je n'ai pas vu beaucoup d'autres personnes de l'utiliser alors j'ai pensé qu'il serait utile de mentionner.
EDIT:
J'ai oublié de préciser que c'est pour déraciner la base de données, l'interaction avec la base de données n'est pas testé dans ce cas. L'interaction réelle aura lieu à la mise en œuvre concrète de IFooDBManager, pour tester que quelque chose de complètement différent est nécessaire.
Aussi, pas toutes les méthodes de cette interface renvoie des choses bien sûr, il y a aussi des méthodes pour l'écriture à la base de données et ces j'ai l'habitude de test par l'interaction des tests dans RhinoMocks où j'ai mis les attentes sur ces méthodes.