Моя цель - уметь определять только те параметры, которые имеют отношение к конкретным тестам, с неизменяемыми типами в C# (строго инжектор конструктора, без set'ers) , и у вас есть настроенное приспособление, которое заботится о допустимых значениях параметров, которые не указаны в тесте.Autofixtures «With» -Customizations for игнорируются при использовании Build <T>
Поцарапав мою голову над этим - мои свойства «с» для строк, DateTime и int игнорируются. Пример основан на "Гость":
public class Guest
{
public readonly string GuestId;
public readonly string GivenName;
public readonly string SurName;
public readonly AgeCode AgeCategory;
public Guest(string guestid, AgeCode ageCategory, string givenName, string surName)
{
AgeCategory = ageCategory;
GivenName = givenName;
SurName = surName;
GuestId = guestid;
}
}
Я настроить экземпляр Крепеж следующим образом:
fixture.Customize<Guest>(composer =>
composer
.With(g => g.GivenName, "Finn")
.With(g => g.GuestId, "1")
.With(g => g.SurName, "Rasmussen")
);
... Который работает при использовании fixture.Create<Guest>()
, но не при использовании fixture.Build<Guest>().With(g=>g.Surname, "Olsen")
.
Глядя на подписи AutoFixture, я понимаю, что это потому, что Fixture.Build<T>()
создает новый композитор, и что композитор не впрыскивается, как «композитор» экземпляр метода Customize<T>
. Кроме того - я понимаю, что первая настройка для свойства «выигрывает», поэтому «перезаписывать» нужно было бы нажать перед настройками ...
Любые предложения? Могу ли я полностью отслеживать здесь, пытаясь использовать отвертку, чтобы забить гвоздь? Или я просто не вижу что-то умное и/или здесь очевидна ...
См. Http://stackoverflow.com/a/28362898/126014 –
См. Также http://stackoverflow.com/a/20816487/126014 –
Спасибо, Марк, и благодарю вас за отличную работу! – Julian