Сравните, равен ли 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
выходит из строя.