我有一个简单的hibernate映射文件,它使用其中一个字段的自定义值类型。自定义值类型包含一些相当复杂的业务逻辑。我希望能够在没有自定义值类型逻辑的情况下对我的对象持久性进行单元测试。有没有办法模拟自定义值类型?
我已经看到了类似的问题,其中接受的解决方案是增强自定义值类型以接受注入的“策略”。我并不特别喜欢为了满足单元测试而增强课程的想法,所以如果可能的话我更愿意嘲笑。
感谢任何人的帮助!!
答案 0 :(得分:1)
我不太清楚你打算测试什么?
如果您实际上要坚持您的实体,您将无法模仿Hibernate的自定义类型 - 至少不是“嘲笑”的常识;所有UserType
方法必须返回有意义的东西。这是“注入策略”解决方案的主要原因 - 以任何其他方式执行将导致更多工作:-)
现在,您肯定可以编写一个非常简单的UserType
实现,并将其替换为测试配置中的原始类型,但我不确定这对于实际持久性是如何工作的 - 可能是“复杂的逻辑“是有原因的,试图解决它可能会导致数据库级别的错误。如果不是这样,那么逻辑可能没有自定义类型,而是属于服务(业务)层中的某个位置。