Ich versuche Autoftixtur zu verwenden, um ein Objekt zu erstellen, aber sie sind bestimmte Eigenschaften, die ich immer voreinstellen möchte (während der Rest automatisch generiert werden konnte). Wann immer ich eine Anpassung einstelle, wird sie jedoch beim Erstellen mit Anpassungen überschrieben.Wie wird AutoFixture verwendet, um mit benutzerdefinierten Eigenschaften zu erstellen, während Typanpassungen beibehalten werden?
void Main()
{
var fixture = new Fixture();
fixture.Customize<Person>(composer => composer.With(p => p.Name, "Ben"));
var person = fixture.Build<Person>()
.With(p => p.DateOfBirth, new DateTime(1900, 1, 1))
.Create();
/* RESULT OF person below
Name null
DateOfBirth 1/1/1900
StreetAddress StreetAddressafd6b86b-376a-4355-9a9c-fbae34731453
State State019e867b-ac5e-418f-805b-a64146bc06bc
*/
}
public class Person
{
public string Name { get; set;}
public DateTime DateOfBirth { get; set;}
public string StreetAddress { get; set;}
public string State { get; set;}
}
Der „Name“ und „DateOfBirth“ Eigenschaft Anpassung nicht in Konflikt, so weiß ich nicht, warum null seinen Name endet. Ich würde erwarten, dass der Name "Ben" ist. .?
Wie kann ich es bekommen, so dass beide Anpassungen angewendet werden (dh Name = "Ben" und DateOfBirth = 1.1.1900
Wird 'AllPersonsAreNamedBen' nicht zu [override] (http://blog.ploeh.dk/2012/07/31/TheorderofAutoFixtureCustomizationsmatter)' AllPersonsAreBornIn1900'? –
Ich stehe korrigiert. Da beide Anpassungen auf denselben Typ angewendet werden, werden sie absolut. Danke, dass du es angerufen hast! Dies ist ein Aspekt von AutoFixture, der mich von Zeit zu Zeit beißt - ich wünschte, ich könnte mehrere Anpassungen inkrementell so kombinieren, dass ich * * * * manchmal vergesse, dass es nicht möglich ist. –
Ich habe meine Antwort aktualisiert, um den Fehler zu korrigieren. –