Automapper UseDestinationValue по-прежнему отображает значение исходного свойства вместо сохранения целевого значения - PullRequest
0 голосов
/ 27 февраля 2019

Я делаю очень простой тест, я хочу сохранить значение свойства в целевом объекте.

У меня есть 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

...