A
ist eine Klasse aus einer referenzierten DLL und kann daher nicht geändert werden. Es hat eine Methode Foo()
, die innerhalb meiner DoFoo()
Methode aufgerufen wird (unter A
als Parameter). Ich möchte DoFoo()
testen, ohne Foo()
auszuführen, weil es teuer ist und bereits getestet wurde.Ersetzen Sie die Implementierung einer "versiegelten" Klasse
Was ist die beste Vorgehensweise in einer solchen Situation?
Meine Gedanken dazu:
- eine Wrapper-Klasse erstellen um
A
und inDoFoo()
passieren. Die Wrapper-Klasse unterscheidet zwischen der echten und der falschen Implementierung. - Das gleiche könnte mit Erweiterungsmethoden durchgeführt werden.
- Verwenden Sie
dynamic
und übergeben Sie eine falsche Klasse mit einer leerenDoFoo()
Implementierung.
Was für die Schnittstelle ist? Nur eine Wrapper-Klasse, die entweder den echten Weg gehen oder einfach nichts tun würde, würde reichen, oder? Gibt es einen Vorteil, den ich verpasst habe? –
Schnittstellenbasierte Programmierung, um Abhängigkeiten reduzieren zu können. Die reale Implementierung wird durch Konstruktorinjektion injiziert. Also ja, ich empfehle Schnittstellen zu verwenden. –