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

108
31 июля 2019, 02:00

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

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

[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>() { RolesEnum.User, RolesEnum.Moderator }
    };
    // act
    var dalUser = mapper.Map<DalUser>(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());
}

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

Answer 1

AutoMapper тестировать не надо. Для этого у него есть

Mapper.Configuration.AssertConfigurationIsValid();

http://docs.automapper.org/en/stable/Configuration-validation.html

Если у вас есть сложная функция конвертации, которую вы вызываете при маппинге, то тестируйте конкретно эту функцию.

READ ALSO
Как устранить OutOfMemoryException?

Как устранить OutOfMemoryException?

Произошло падение от OutOfMemoryException

119
C# список generics

C# список generics

помогите пожалуйста разобраться с Generics

144
Вывод текста в кодировке сp866 в richtextbox

Вывод текста в кодировке сp866 в richtextbox

Получаю файл текстовый файл в кодировке 866, необходимо вывести текст файла в richtextbox

124
Как отследить нажатие на sprite?

Как отследить нажатие на sprite?

Я могу узнать куда нажал пользователь:

120