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.
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.
Tags und Links .net c# entity-framework unit-testing mstest