Ich refactoring eine Klasse, so dass der Code testbar ist (mit NUnit und RhinoMocks als Test- und Isolierungsframeworks) und gefunden habe, dass ich mich mit einer Methode gefunden habe, ist abhängig von einer anderen (dh es hängt von etwas ab, das dadurch erstellt wird andere Methode). Etwas wie folgt aus:Ist es ein Code-Geruch für eine Methode, um von einer anderen abhängig zu sein?
public class Impersonator
{
private ImpersonationContext _context;
public void Impersonate()
{
...
_context = GetContext();
...
}
public void UndoImpersonation()
{
if (_context != null)
_someDepend.Undo();
}
}
was bedeutet, dass zu Test UndoImpersonation
, ich brauche es einzurichten durch Impersonate
Aufruf (Impersonate hat bereits mehrere Komponententests sein Verhalten zu überprüfen). Das riecht mir schlecht, aber in einem gewissen Sinn macht es Sinn, aus der Sicht des Codes, der in dieser Klasse ruft:
public void ExerciseClassToTest(Impersonator c)
{
try
{
if (NeedImpersonation())
{
c.Impersonate();
}
...
}
finally
{
c.UndoImpersonation();
}
}
Ich würde das nicht ausgearbeitet haben, wenn ich nicht versuchen, einen schreiben Unit-Test für UndoImpersonation
und fand mich selbst den Test durch Aufruf der anderen öffentlichen Methode einrichten. Also, ist das ein schlechter Geruch und wenn ja, wie kann ich damit umgehen?
Übrigens zeigt dies eine wichtige Seite - Nutzen von Unit-Tests (?): Es macht Sie Ihr Design denken ... :-) – sleske
Yep, vereinbart:) – jpoh