Was macht die CreateMany
Überladung mit dem Parameter T seed
? Ich habe versucht zu säen, aber der Seed scheint keine Wirkung auf die erstellten Objekte zu haben. Zum Beispiel erwartete ich, dass, wenn mein Seed eine Eigenschaft vom Typ string
hätte, dass entweder:
Der Zeichenfolgenwert wird verwendet, um diese Eigenschaft in allen neu erstellten Objekten aufzufüllen
oder der Zeichenfolgenwert wird als Präfix verwendet, wenn diese Eigenschaft in allen neu erstellten Objekten
In der Regel garantiert AutoFixture nicht wie Seed-Werte, wenn überhaupt, während des Erstellungsprozesses verwendet werden. Diese Eigenschaft ergibt sich aus der Art, wie AutoFixture entworfen wurde .
Jedes Mal, wenn AutoFixture aufgefordert wird, ein Objekt mit einem bestimmten Type
zu erstellen, wird die Anfrage über eine Pipeline von Objekten namens" builders ". Jeder Builder ist verantwortlich für die Behandlung einer bestimmten Art von Anfrage (sei es eine Anfrage für einen konkreten Typ , eine Schnittstelle , eine ) Eigenschaft , ein Feld usw.). Wenn ein Builder auf eine Anforderung stößt, die er verarbeiten kann, wird ein Wert zurückgegeben und die Pipeline wird mit der nächsten Anforderung neu gestartet.
Wenn Sie ein Objekt basierend auf einem Seed erstellen möchten, müssen Sie unter AutoFixture sicherstellen, dass der von Ihnen angegebene Startwert eingebettet in die Anfrage , die durch die Pipeline gesendet wird. Dann liegt es an den Bauherren, zu entscheiden, was mit diesem Wert zu tun ist.
AutoFixture kommt derzeit mit einem einzelnen Builder , der die Startwerte berücksichtigt und das ist der für Strings .
Sie können AutoFixture jedoch mitteilen, wie sie beim Erstellen von Objekten eines beliebigen Typs verwenden soll, indem Sie eine Fixture
speziell für diesen Typ mit die FromSeed
Methode :
Die Factory-Funktion , die Sie für FromSeed
bereitstellen, wird jedes Mal aufgerufen, wenn AutoFixture eine Instanz von Foo
erstellen muss und der Startwert von Fixture
übergeben wird. Zum Beispiel:
Der Parameter seed
der Factory-Funktion erhält das% seed-Objekt% co_de, für das die Eigenschaft Foo
auf Bar
gesetzt ist.
Tags und Links c# unit-testing autofixture