@Pure.Krome : bonne réponse mais je vais ajouter quelques détails
@Kevin : Il faut choisir une solution en fonction des modifications que l'on peut apporter au code.
Si vous pouvez le changer, certaines injections de dépendances rendent le code plus testable. Si vous ne pouvez pas, vous avez besoin d'une bonne isolation.
Avec les frameworks de mocking gratuits (Moq, RhinoMocks, NMock...) vous ne pouvez mocker que les délégués, les interfaces et les méthodes virtuelles. Donc, pour les méthodes statiques, scellées et non virtuelles vous avez 3 solutions :
-
Isolateur TypeMock (on peut se moquer de tout mais c'est cher)
-
JustMock de Telerik (nouveau venu, moins cher mais pas encore gratuit)
-
Taupes de Microsoft (la seule solution gratuite pour l'isolation)
Je recommande les taupes parce qu'il est gratuit, efficace et utilise des expressions lambda comme Moq. Juste un détail important : Moles fournit des stubs, pas des mocks. Vous pouvez donc toujours utiliser Moq pour les interfaces et les délégués ;)
Mock : une classe qui implémente une interface et permet de définir dynamiquement les valeurs à renvoyer/les exceptions à lancer à partir de méthodes particulières et offre la possibilité de vérifier si des méthodes particulières ont été appelées/non appelées.
Stub : Comme une classe fantaisie, sauf qu'elle ne permet pas de vérifier que les méthodes ont été appelées ou non.