2016-07-25 8 views
1

AutoFixture ich einfach eine Instanz eines Datenobjekts erstellen Mit füllen Sie das Verfahren wie so erstellen mit:Wie kann ich AutoFixture ein Objekt erstellen, aber keine Eigenschaften

_fixture.Create<FilterItems>() 

Mit dieser Technik, die ich geschützt bin für irgendwelche Änderungen im Konstruktor, die in der Zukunft kommen können, aber es füllt auch alle Eigenschaften aus, die in diesem Fall (weil es eine Ansammlung von Filtern ist) nicht gewünscht wird.

Gibt es eine Möglichkeit, nur AutoFixture zu sagen, das Objekt zu erstellen, aber keine Eigenschaften zu füllen?

Ich weiß, es gibt eine Without-Methode, um ein Feld zu überspringen, aber die Verwendung bedeutet, dass ich hinzufügen muss, während ich lieber mit einem leeren Objekt beginne und hinzufüge, wenn ein Test es benötigt.

Antwort

4

Es gibt viele Möglichkeiten, dies zu tun.

Sie können es als eine einmalige Operation:

var fi = fixture.Build<FilterItems>().OmitAutoProperties().Create(); 

Sie können auch die fixture Instanz anpassen, um immer auto-Eigenschaften für einen bestimmten Typ auslassen:

fixture.Customize<FilterItems>(c => c.OmitAutoProperties()); 

Oder Sie können auto-properties vollständig ausschalten:

Wenn Sie eine der Einheit te verwenden Stachel Kleber Bibliotheken wie AutoFixture.Xunit2, können Sie es auch deklarativ:

[AutoData] 
public void MyTest([NoAutoProperties]FilterItems fi) 
{ 
    // Use fi here... 
} 
+2

Wow, ich war gerade auf Ihren Pluralfortgeschrittenenkurs zu beobachten. Erstaunlich, eine Antwort vom Autor selbst in 4 Minuten nicht weniger zu erhalten! Danke für die Antwort, ich habe die AutoProperties-Dokumentation völlig falsch verstanden, was (für mich) impliziert, dass diese Funktion Eigenschaften mit einem Standardwert überspringt und somit keine Werte überspringt, die sonst zu einem Standardwert führen würden (). – Robba

1

Sie sollten _fixture.OmitAutoProperties = true; anrufen, bevor Sie eine Probe erstellen.

Verwandte Themen