So erstellen Sie einen Komponententest für ein Objekt, das von DbEntityEntry abhängig ist

8

Ich habe die folgende Hilfsmethode, die die Validierungsnachrichten aus der DbEntityValidationException entfernt. Wir benötigen dies, weil die Details der Validierung nicht standardmäßig zur Ausnahme hinzugefügt werden.

%Vor%

Ich bin auf ein Problem gestoßen, das versucht, Einheitentest zu erstellen, insbesondere kann ich kein DbEntityValidationResult erstellen, da es eine Instanz von DbEntityEntry erforderte, die keinen öffentlichen Konstruktor hat.

Hier ist der Unit-Test abgebrochen, es schlägt beim Erstellen des DbEntityEntry fehl:

%Vor%

Beachten Sie, dass DbEntityEntry keine Schnittstelle implementiert, also kann ich keine Mock / Fake verwenden.

    
Josh 28.10.2014, 16:18
quelle

1 Antwort

1

Einige Pseudoframeworks wie Moq machen Methodenumleitung, so dass Sie Klassen ohne Interfaces vortäuschen können. Ähnlich wie Ссылка

Damit ist gesagt, dass das keine gute Programmierpraxis ist, da Sie Ihren Testcode für immer von diesem Framework abhängig machen werden und Sie einige der Designvorteile von Komponententests verlieren.

Sie können eine Proxy-Klasse schreiben, um Ihr nicht testbares Objekt einzubinden und eine Schnittstelle hinzuzufügen. Dann verwenden Sie die Proxy-Klasse jedes Mal, wenn Sie die normale Klasse verwenden.

    
Alfredo Alvarez 28.10.2014 16:37
quelle