ile alt öğede özellik değerinin sabit bir değere ayarlanması Autofixture ile bir üst öğe oluştururken bir alt öğe için bir mülke sabit bir değer atamak mümkün mü? Çocuk örneğindeki tüm özelliklere bir cazibe gibi varsayılan değerler ekler, ancak alt öğe örneğindeki özelliklerden birine belirli bir değeri geçersiz kılmak ve atamak isterim. Bu üst/alt ilişkisi göz önüne alındığında Autofixture
: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; }
}
ben adres örneğinde İl özelliğine belirli bir değer atamak istiyoruz. Bu test kodunun satırlarında düşünüyordum:
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);
Bu mümkün değildir. Ben Autofixture Kişi örneğinin yerine bir adres örneğinde bir şehir özelliğine değer atamak için çalıştığı ... yansıma istisna
System.Reflection.TargetException : Object does not match target type.
tarafından, sanırım.
Herhangi bir öneriniz var mı?
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);
... ama ilk sürümünü veya benzer bir şey (daha kısa ve öz az adımları,) umuyordum:
Ve evet, ben sadece fazladan adım aşağıdaki gibi katkı sağlayabileceğini biliyoruz.
Not: Ben Bir oluşturucudaki yöntemi mı kullanabilirsiniz Autofixture v3.22.0
related: http://stackoverflow.com/a/11657881/11635 –