我已经开始尝试使单元测试尽可能地简洁,然后我发现:如何以一种干净的方式比较包含10多个属性并共享其中一些属性的DTO和域模型(DM)但不是全部?
详细信息:可以有共享的属性,但是具有不同的类型或名称,因此在这种情况下不能使用反射。
示例:
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中实现相互比较的方法?或在这种情况下的最佳做法是什么?
答案 0 :(得分:2)
您可能在代码中的某处具有DTO到域的映射逻辑,例如PersonToDtoMapper
类。确保映射逻辑封装在单独的类中。然后,您可以在单元测试中重用此映射器类,在需要比较时将其从一种格式转换为另一种格式。
只要在自己的测试中对PersonToDtoMapper
进行了测试,那么在其他测试中重用它就不会有问题,如果PersonToDtoMapperTest
失败,错误很容易被发现。