Ist es möglich, einer Eigenschaft in einer untergeordneten Instanz einen festen Wert zuzuweisen, wenn ein übergeordnetes Element mit Autofixtion erstellt wird? Es fügt allen Eigenschaften der untergeordneten Instanz Standardwerte wie einen Charm hinzu, möchte jedoch einen bestimmten Wert für eine der Eigenschaften der untergeordneten Instanz überschreiben und zuweisen.Festlegen des Eigenschaftswerts für untergeordnete Instanz auf einen festen Wert mit AutoFixtion
diese Eltern/Kind-Beziehung:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
}
public class Address
{
public string Street { get; set; }
public int Number { get; set; }
public string City { get; set; }
public string PostalCode { get; set; }
}
Ich möchte einen bestimmten Wert an die Stadt Eigenschaft auf der Adresse Instanz zuzuweisen. Ich dachte in den Zeilen dieses Testcodes:
var fixture = new Fixture();
var expectedCity = "foo";
var person = fixture
.Build<Person>()
.With(x => x.Address.City, expectedCity)
.Create();
Assert.AreEqual(expectedCity, person.Address.City);
Das ist nicht möglich. Ich denke, durch die Reflexion Ausnahme
System.Reflection.TargetException : Object does not match target type.
... dass Autofixture versucht, den Wert in eine Stadt Eigenschaft auf der Person Instanz anstelle einer Adresse Instanz zuzuweisen.
Irgendwelche Vorschläge?
Und ja, ich weiß, dass ich nur ein zusätzlicher Schritt wie folgt hinzufügen könnte:
var fixture = new Fixture();
var expectedCity = "foo";
// extra step begin
var address = fixture
.Build<Address>()
.With(x => x.City, expectedCity)
.Create();
// extra step end
var person = fixture
.Build<Person>()
.With(x => x.Address, address)
.Create();
Assert.AreEqual(expectedCity, person.Address.City);
... aber hatte gehofft, für die erste Version oder etwas ähnliches (weniger Schritte, mehr terse).
Hinweis: Ich verwende Autofixture v3.22.0
bezogen werden: http://stackoverflow.com/a/11657881/11635 –