Wenn ich AutoFixture als SutFactory verwende, kann ich feststellen, dass wenn ich einen Wert für Ein Typ, dieser Wert wird dann für alle nachfolgenden Verwendungen dieses Typs verwendet. Wenn ich jedoch eine Klasse mit zwei Parametern habe, die im Konstruktor den gleichen Typ haben, wie zum Beispiel:
%Vor%Welche Strategien gibt es, um AutoFixtion zu verwenden, um eindeutige vordefinierte Werte für ParameterA und ParameterB zu injizieren, um den berechneten Wert zu testen?
* Leider kann ich mein genaues Szenario hier nicht teilen, jedoch benutze ich das Befehlsmuster, um auf einem anderen Objekt zu operieren. Die einzige Art, ParameterA und ParameterB zu setzen, ist das Einfügen des Designs sowohl in als auch in den Konstruktor der beste Weg, dies in diesem Fall zu tun.
Nachdem ich die Funktionen ein wenig mehr genutzt habe, habe ich persönlich festgestellt, dass es nicht zu viele Objekte gibt, wo dies geschieht, daher ist es am besten, hier eine einfache Anpassung für die Klasse zu erstellen, z. B .:
%Vor%Ich finde, dass dies mir immer noch die Flexibilität gibt, die bei AutoFixture groß ist, ohne Kompromisse bei bestimmten Instanzen von ParameterA oder ParameterB einzugehen (Sie könnten sie mit Builder-Methoden, Konstruktor usw. einrichten) die Anpassung an Random-Werte).
Eine Option besteht darin, den Erstellungsalgorithmus für alle Instanzen von ClassA
anzupassen.
Es ist meine Beobachtung, dass ich in den meisten Fällen, in denen ich auf ein solches Szenario stoße, die Werte nicht kontrollieren muss, bevor sie an den Konstruktor übergeben werden, sondern dass ich sie brauche wissen was die Werte sind.
Dies lässt sich leicht erreichen, wenn Strukturprüfungseigenschaften zur Klasse hinzugefügt werden:
%Vor%Nun können Sie AutoFixture bitten, ohne weiteres eine Instanz von ClassA zu erstellen und anschließend die Instanz nach den Werten abzufragen.
Tags und Links c# tdd autofixture