Ich habe so eine Klasse:
%Vor% Um die IPagination-Schnittstelle soll ein dynamischer Proxy erstellt und der Proxy mit Testdaten gefüllt werden.
Ist es nun möglich, dass AutoFixture eine Instanz des ViewModel-Typs erstellt?
Beachten Sie, dass ich den Typ nur zur Laufzeit kenne ( typeof(ViewModel)
).
Inzwischen weiß ich, dass ich das tun kann:
%Vor%Theoretisch sollte es möglich sein, die Eigenschaften einer automatisch gespielten Instanz zu füllen.
Angenommen, die Eigenschaft IPagination<T>
des Typs ViewModel
ist definiert als:
Wir könnten eine ad-hoc automatische Spottanpassung erstellen, z. MyCustomization
.
Dann wird der folgende Aufruf eine Instanz von ViewModel
erstellen (die nur zur Laufzeit bekannt ist) , eine automatisch gemachte Instanz der IPagination<Data>
- und zuweisen-Werte bereitstellen zu den Eigenschaften.
%Vor%Bevor Sie diese Anpassung anwenden, beachten Sie bitte, dass dies nur für dieses spezielle Szenario funktionieren sollte (also die ad-hoc in der Beschreibung). Ich würde dringend empfehlen, eine der Erweiterungen für Auto Mocking, AutoMoq , AutoRhinoMocks , AutoFakeItEasy oder AutoNSubstitute überall sonst.
Eine einfache Möglichkeit besteht darin, eine Factory-Methode zu registrieren:
%Vor%Damit AutoFixture automatisch Proxys für Schnittstellen erstellt, die Sie mit einer der automatischen Spottanpassungen verwenden möchten,
In diesem Fall wird eine Instanz der Schnittstelle erstellt, die eine leere Liste darstellt.
Wenn Sie Testdaten in dieser Liste haben möchten, möchten Sie nicht die automatische Mocking-Anpassung verwenden, sondern eine Anpassung, die die Semantik von IPagination
wie beschrieben in diesem Blogpost .
Wenn das zu komplex ist, können Sie immer noch die Methode Register
verwenden:
Tags und Links c# test-data autofixture