Ответ 1
Вместо настройки экземпляра Fixture
с помощью AutoNSubstituteCustomization
вы можете использовать настройку ниже:
var fixture = new Fixture().Customize(
new AutoPopulatedNSubstitutePropertiesCustomization());
var result = fixture.Create<IPersonEntity>();
// -> All properties should be populated now.
AutoPopulatedNSubstitutePropertiesCustomization
определяется как:
internal class AutoPopulatedNSubstitutePropertiesCustomization
: ICustomization
{
public void Customize(IFixture fixture)
{
fixture.ResidueCollectors.Add(
new Postprocessor(
new NSubstituteBuilder(
new MethodInvoker(
new NSubstituteMethodQuery())),
new AutoPropertiesCommand(
new PropertiesOnlySpecification())));
}
private class PropertiesOnlySpecification : IRequestSpecification
{
public bool IsSatisfiedBy(object request)
{
return request is PropertyInfo;
}
}
}
Разница с AutoNSubstituteCustomization
заключается в том, что вышеупомянутая настройка также украшена экземпляром Postprocessor
для автоматического задания значений для всех общедоступные свойства запрашиваемого типа.
Ссылки
Вышеупомянутое решение основано на следующих статьях блога Mark Seemann: