Okay, ich weiß, das klingt wie eine seltsame Anfrage, aber hier ist mein Problem. Ich möchte einige Integrationstests für meinen WCF-Dienst schreiben. Ich habe ein paar Schlüsselpfade, die ich sicherstellen will, dass sie sich richtig verhalten. Ein Test besteht darin, sicherzustellen, dass die richtigen Ausnahmen an Schlüsselstellen ausgegeben werden und dass sie die Pipeline korrekt weiterleiten, ohne dass sie an der falschen Stelle abgefangen werden.Entfernen Sie registrierte Dekorateur in Simple Injector
Um dies zu tun, überschreibe ich eine bestehende Registrierung mit einem Mock-Objekt, das die Ausnahme, die ich testen möchte, an dem Ort, an dem ich es geworfen werden will. Dieser Teil funktioniert gut.
Als nächstes möchte ich meine Befehlshandler auflösen (das System im Test), rufen Sie die Handle-Methode auf, und bestätigen Sie, dass die richtige Ausnahme passiert.
Das Problem ist, dass, wenn ich meinen Befehlshandler auflösen, ich tatsächlich eine loooong Kette von Dekoratoren mit meinem Befehlshandler ganz unten zurückbekomme. Ganz oben in dieser Kette befindet sich ein Decorator, der mein globaler Ausnahme-Handler ist. Es ist diese Ausnahme, die den Dekorator oben behandelt, dass ich die Registrierung aufheben muss, weil es verhindert, dass ich feststellen kann, dass die Ausnahme ausgelöst wurde. Mein Container-Bootstrapper ist ziemlich komplex, so dass ich absolut keine Lust habe, eine Kopie davon in meinem Testprojekt ohne diesen einen Dekorateur neu zu erstellen.
Wenn es nur eine Standardregistrierung wäre, könnte ich einfach die Registrierung mit einem falschen Ausnahme-Handler überschreiben, der die Ausnahme erneut ausliest. Soweit ich das beurteilen kann, scheint es jedoch nicht möglich zu sein, die Registrierung eines Dekorators zu überschreiben. Ich würde es trotzdem vorziehen, diesen Weg nicht zu gehen. Es macht den Test mit einem zusätzlichen Schein noch komplizierter. Es wäre viel besser, wenn ich den Dekorateur einfach abmelden könnte.
Wenn es nicht möglich ist, einen Dekorateur abzumelden, was wäre meine nächste beste Lösung? Füge Optionsflags zu meinem Bootstrapper hinzu, um bestimmte Registrierungen zu aktivieren/deaktivieren?
Danke.