我拥有以下jpa实体:
@Entity
@Builder
@Table(name = "My_Table")
public class MyTableEntity {
@Column(name = "id")
private long id;
@Column(name = "creationdatetime")
private LocalDateTime creationDateTime;
@Column(name = "updatedatetime")
private LocalDateTime updateDateTime;
@PrePersist
protected void onCreate() {
this.creationDateTime = LocalDateTime.now();
this.updateDateTime = LocalDateTime.now();
}
}
我做了一个单元测试:
LocalDateTime creationDate = LocalDateTime.now().minusDays(100);
MyTableEntity entity =
MyTableEntity.builder()
.id(1)
.build();
entity.setCreationDateTime(creationDate)
entity.setUpdateDateTime(creationDate)
但是,稍后在我的单元测试中,我为creation date time和update date time设置的值会根据 @PrePersist
方法。
仅仅为了单元测试,我怎么能停止 @PrePersist
从重写我在单元测试期间显式设置的值开始?
(如果有帮助,我正在使用mockito。)
1条答案
按热度按时间xwbd5t1u1#
最简单的方法是在
MyTableEntity#onCreate
方法:那么您在单元测试中设置的值就不会被重写。
另一个选择是通过
onCreate
来自外部的代码。然后可以在单元测试中设置oncreateconsumer: