Я делаю очень простой тест, я хочу сохранить значение свойства в целевом объекте.
У меня есть 2 класса:
public class Model_Source
{
public int Prop_A { get; set; }
public string Prop_B { get; set; }
public string Prop_C { get; set; }
}
public class Model_Destination
{
public int Prop_A { get; set; }
public string Prop_B { get; set; }
public string Prop_C { get; set; }
}
У меня естьнастроил автоматическое сохранение целевого значения Prop_C для класса Model_Destination без изменений :
public class AutomapperProfileSetting : Profile
{
public AutomapperProfileSetting()
{
//<TSource, TDestination>
this.CreateMap<Model_Source, Model_Destination>()
.ForMember(source => source.Prop_C, opt => opt.UseDestinationValue());
}
}
Это мой метод тестирования с использованием xunit:
[Fact]
public async Task MapTest_UseDestinationValue()
{
//ARRANGE
//----------------------
//auto mapper configuration
var mockMapper = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new AutomapperProfileSetting());
});
IMapper mapper = mockMapper.CreateMapper();
Model_Source model_Source = new Model_Source();
model_Source.Prop_A = 111;
model_Source.Prop_B = "Source VALUE B";
model_Source.Prop_C = "Source VALUE C";
Model_Destination model_Destination = new Model_Destination();
model_Destination.Prop_A = 222;
model_Destination.Prop_B = "Destination VALUE B";
model_Destination.Prop_C = "Destination VALUE C - UNCHANGED";
//ACT
//----------------------
model_Destination = mapper.Map<Model_Source, Model_Destination>(model_Source);
}
После запуска теста значения свойства model_Destination составляют:
model_Destination.Prop_A == 222 //<--NOT EXPECTED
model_Destination.Prop_B == "Destination VALUE B" //<--NOT EXPECTED
model_Destination.Prop_C == "Source VALUE C" //<--NOT EXPECTED, was expecting "Destination VALUE C - UNCHANGED"???
Ожидаемые значения для значений свойства model_Destination:
model_Destination.Prop_A == 111
model_Destination.Prop_B == "Source VALUE B"
model_Destination.Prop_C == "Destination VALUE C - UNCHANGED"
Наконец, Prop_C не должен был быть изменен, значение должно было быть "Destination VALUE C - UNCHANGED", как получилось?
ps Я использую AutoMapper.Extensions.Microsoft.DependencyInjection v6.0.0 сзависимость от automapper 8.0.0 и .net core 2.2.0