È possibile assegnare un valore fisso a una proprietà su un'istanza figlio durante la creazione di un genitore con Autofixture? Aggiungerà valori predefiniti a tutte le proprietà dell'istanza figlio come un incantesimo, ma vorrei sovrascrivere e assegnare un valore specifico a una delle proprietà sull'istanza figlio.Impostazione del valore della proprietà sull'istanza figlio su un valore fisso con Autofixture
Dato questo rapporto/genitore-figlio:
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; }
}
vorrei assegnare un valore specifico alla proprietà Città sull'istanza indirizzo. Stavo pensando alle righe di questo codice di test:
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);
Questo non è possibile. Credo che, per l'eccezione riflessione
System.Reflection.TargetException : Object does not match target type.
... che Autofixture cerca di assegnare il valore ad una proprietà della città nell'istanza persona invece di un'istanza Indirizzo.
Qualche suggerimento?
E sì, lo so che ho potuto solo aggiungere un ulteriore passaggio simile al seguente:
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);
... ma speravo per la prima versione o qualcosa di simile (meno passaggi, più terse).
Nota: sto usando Autofixture v3.22.0
correlati: http://stackoverflow.com/a/11657881/11635 –