Wie kann ich allgemeine Nachbearbeitung hinzufügen, die nach der Anpassung angewendet wird?

8

Ich habe ISpecimenBuilder für meine Modelle definiert und benutze es so:

%Vor%

Ich möchte es in den meisten meiner Tests bezüglich des Modells verwenden. Ich möchte auch eine Form der Nachbearbeitung in einer meiner Testklassen anwenden. Insbesondere möchte ich die Eigenschaft CompanyHistory aller erstellten Offers füllen. Es fühlt sich an, als könnte es so gemacht werden:

%Vor%

Aber Build<T> deaktiviert alle Anpassungen und ich brauche sie.

Kann ich so etwas machen?

%Vor%

Oder sollte ich mein eigenes Verhalten schreiben? Wenn ja, kann mir dazu jemand Richtlinien geben?

BEARBEITEN : Ich glaube, ich muss betonen, dass ich meine gemeinsame Anpassung (ModelCustomization) und Postprocessor

verwenden möchte

BEARBEITEN 2 : Was ich von Anfang an meinte ist, dass ModelCustomization Offer erzeugen kann (und sollte) und mein zukünftiger Postprozessor sollte diese bereits erstellte Probe verwenden und einige seiner Eigenschaften füllen.

    
joozek 04.02.2014, 22:28
quelle

3 Antworten

0

Ich schrieb am Ende folgende Anpassung:

%Vor%

Das funktioniert, aber es ist alles andere als perfekt. Wie Sie sehen können, verweise ich direkt auf ModelSpecimenBuilder , so dass ich von der Implementierung abhängig bin (als Postprozessor möchte ich nicht sein).

Die Antwort, die von @ Nikos gepostet wird, ist nicht befriedigend, da seine Anpassung vorherige Anpassungen in der Verantwortungskette ignoriert.

  

Wenn wir die Create-Methode aufrufen, ruft CompositeSpecimenBuilder die Create-Methode aller enthaltenen Builder auf, bis einer von ihnen eine Probe bereitstellt. An dieser Stelle gilt die Anforderung als erfüllt und die restlichen Builder werden ignoriert.

     

Quelle: AutoFixture-Dokumentation

    
joozek 05.02.2014, 18:23
quelle
5

So können Sie in diesem Fall Postprocessor erstellen und verwenden:

%Vor%

Der Befehl OfferFiller ist definiert als:

%Vor%

Der OfferSpecification ist definiert als:

%Vor%     
Nikos Baxevanis 05.02.2014 05:33
quelle
1

Ich hatte ein ähnliches Problem und habe die hier erwähnten Lösungen ausprobiert, aber sie haben nicht wie erwartet funktioniert. Schließlich habe ich eine Implementierung einer Klasse PostProcessWhereIsACustomization gefunden, die genau das tut, was ich brauchte:

  

Anpassung der AutoFixture, um das Einfügen beliebiger Nachbearbeitungslogik zu ermöglichen a la Customize (c = & gt; c.Do ()), aber auf eine globale Art und Weise Überarbeitet für v3 (ursprünglich für v2)

Darf jemand googeln.

    
MarcinS 09.09.2016 10:48
quelle

Tags und Links