Сравните, равен ли DTO модели предметной области в Java

Я начал пытаться сделать свои юнит-тесты как можно более чистыми и натолкнулся на следующее: как я могу безошибочно сравнить DTO и модель предметной области (DM), которые содержат более 10 атрибутов, и совместно использовать некоторые из них, но не все??

Подробно: могут быть общие атрибуты, но с другим типом или другим именем, поэтому отражение не может быть использовано в этом случае.

Пример:

class Person {
     private String id;
     private String name;
     private String lastName;
     private Date   dateOfbirth;
}

class PersonDto{
     private String id;
     private String name;
     private String lastName;
     private int    dateOfBirth;
}

DTO не должен содержать какой-либо сложной логики, поскольку он предназначен только для передачи данных между клиентом - контроллером - службой.

DM для сохранения и предоставления информации между слоями Service - Repository. Но он не должен иметь какой-либо сложной логики (до сих пор равен и хэш-код).

Тогда я думал... Должен ли я создать TestHelperComparator выполнить эту операцию? или внедрить в DTO или DM метод для сравнения друг с другом? или какова лучшая практика в этом случае?

1 ответ

Решение

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

Пока PersonToDtoMapper тестируется в своем собственном тесте, его повторное использование в других тестах не должно быть проблемой, ошибки легко заметить, если PersonToDtoMapperTest выходит из строя.

Другие вопросы по тегам