Lassen Sie uns sagen, dass ich eine Reihe von Klassen, die wie etwas aussehen ...Unit Test stark gekoppelten Code in .net; Reflexion, um Mocks zu injizieren?
class Foo{
private Bar highlyCoupled = new highlyCoupled();
public bool DoTheThing(){
return highlyCoupled.doesTheThing();
}
}
Ist es möglich, Reflektion zu verwenden zu öffnen foo und injizieren eine Art von (Ente-punch eine korrektere Begriff sein kann) hochgekoppelt an Stelle von hochgekoppelt?
Was in dieser Situation über ...
class DoubleFoo : Foo{
public bool DoTheOtherThing(){
return DoTheThing();
}
}
Kann die geerbte highlyCoupled ein Mock in seinen Platz eingesteckt habe?
Refactoring der Code, so dass keine Reflexion erforderlich ist, ist leider nicht möglich.
Syntaxfehler in Zeile 2. –
Ohne ein ernsthaftes Refactoring können Ihre Tests sehr brüchig sein. – jrummell
Was fragen Sie? Können Sie die Reflektion verwenden, um private Mitglieder festzulegen? Ja, du kannst. Hast du Probleme damit? – cadrell0