AutoFixture IEnumerableT Verhalten mit CreateMany ()

9

Wenn man sich den Post hier ansieht, sieht es so aus, als ob ich es sein sollte Sie können mehrere Objekte mit CreateMany() erstellen, über sie mit foreach iterieren und sie dann als Array zurückgeben.

Was ich sehe, ist, dass jede Iteration jedes Mal neue Objekte zu erstellen scheint. Ist das erwartetes Verhalten?

Zu erstellende Entität:

%Vor%

Beispielprogramm.cs:

%Vor%

Ich habe ein Problem hier erstellt (das wahrscheinlich gelöscht werden kann, wenn dies erwartet wird).

Bearbeiten 2011-06-02

Um das erwartete Verhalten zu erhalten, und wenn ich das Verhalten von AutoFixture nicht ändern möchte, kann ich eine Erweiterungsmethode verwenden:

%Vor%     
rbellamy 31.05.2011, 00:34
quelle

1 Antwort

6

Dies ist in der Tat das erwartete Standardverhalten. Es gibt viele Gründe dafür, aber im Grunde läuft es darauf hinaus, wenn du nach einem IEnumerable<T> AutoFixture fragst, geht tatsächlich sehr weit, um sicherzustellen, dass du nur das bekommst, was du verlangst.

Dies ist für viele überraschend. Die gute Nachricht ist, dass Sie es ändern können.

%Vor%

Dies wird das Verhalten so verändern, dass anschließend alle Sequenzen stabil sind. Sie können diesen Methodenaufruf in eine Anpassung für eine bessere Wiederverwendbarkeit verpacken. Das könnte ungefähr so ​​aussehen (völlig optional):

%Vor%     
Mark Seemann 31.05.2011, 05:28
quelle

Tags und Links