Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Как правильно тестировать AutoMapper?

#c_sharp #net_core #automapper


Продакшен код работает с автомаппером, есть цель протестировать работу автомаппера.
Имеется в виду : протестировать правильность маппинга тех или иных сущностей.

Вот что написал я:

[Test]
public void MapFromUserToDalUser()
{
    // arrange
    var user = new User()
    {
        Id = 1,
        Email = "kek@cheburek.ru",
        Name = "Birsultan Nazarbaev",
        Phone = "233-655-900",
        SsoId = "myuniquessoid",
        ContactDetails = "shieee",
        Roles = new List() { RolesEnum.User, RolesEnum.Moderator }
    };

    // act
    var dalUser = mapper.Map(user);

    // assert
    Assert.AreEqual(user.Id, dalUser.Id);
    Assert.AreEqual(user.Name, dalUser.Name);
    Assert.AreEqual(user.Phone, dalUser.Phone);
    Assert.AreEqual(user.SsoId, dalUser.SsoId);
    Assert.AreEqual(user.Email, dalUser.Email);
    Assert.AreEqual(user.ContactDetails, dalUser.ContactDetails);
    Assert.AreEqual(
        user.Roles.Select(x => (int)x).OrderBy(x => x).ToList(),
        dalUser.DalUserDalRoles.Select(x => x.DalRoleId).OrderBy(x => x).ToList());
}


Как по мне - это не особо верный подход написания тестов для автомаппера, т.к. я
создаю сущность вручную после делаю маппинг и сравниваю. 
Знаю, что у автомаппера есть возможность автоматически генерить фейк и проверить
смапилось ли корректно или нет.
Вопрос в том, как сделать то ,что я сделал вручную, автоматически?
    


Ответы

Ответ 1



AutoMapper тестировать не надо. Для этого у него есть Mapper.Configuration.AssertConfigurationIsValid(); http://docs.automapper.org/en/stable/Configuration-validation.html Если у вас есть сложная функция конвертации, которую вы вызываете при маппинге, то тестируйте конкретно эту функцию.

Комментариев нет:

Отправить комментарий