Сравните, равен ли DTO модели предметной области в Java - PullRequest
2 голосов
/ 05 марта 2019

Я начал пытаться сделать свои юнит-тесты как можно более чистыми, и я натолкнулся на следующее: как я могу безошибочно сравнить 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 для сохранения и предоставления информации между слоями службы - хранилища.Но у него не должно быть какой-либо сложной логики (до сих пор равных и хеш-кодов).

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

1 Ответ

2 голосов
/ 05 марта 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...