J'ai du code qui effectue une opération de base de données héritée, puis traite le résultat. Je veux écrire un test unitaire qui vérifie la méthode qui appelle le code existant sans interagir avec la 'base de données'.Comment puis-je supprimer les dépendances au code d'un tiers lors du test unitaire?
Mon code ressemble à ceci:
public static bool CallRoutine(LegacySession session, /* routine params*/)
{
try
{
LegacyRoutine routine = session.CreateRoutine(/* routine params */);
routine.Call();
// Process result
}
catch (LegacyException ex)
{
// Perform error handling
}
}
Si cela était tout mon code, je créerais des interfaces que le LegacySession
et LegacyRoutine
implémentent puis écrire des tests unitaires qui utilisent des implémentations simulacres de ces interfaces en utilisant MOQ ou quelque chose similaire. Le problème est que je n'ai pas accès au code pour LegacyRoutine
ou LegacySession
donc je ne peux pas les faire implémenter une interface.
Des idées sur comment je pourrais faire cela sans trop changer le code de production?
Avez-vous regardé dans des bibliothèques moqueuses comme Moq: http://code.google.com/p/moq/ – Kane
@Kane: J'avais l'intention d'utiliser Moq mais je pensais que je devais dériver les classes pour être 'Moqed' à partir d'une interface pour le faire? Je ne peux pas changer l'une ou l'autre des classes Legacy ... –