gpt4 book ai didi

spring - 如何在过去设置@CreatedDate(用于测试)

转载 作者:行者123 更新时间:2023-11-28 19:59:06 31 4
gpt4 key购买 nike

我的 spring-data-jpa 后端有一个用大量测试数据填充(测试)数据库的类。该类使用 spring 数据存储库来创建实体。我所有的实体都有一个用 @CreatedData 注释的字段和模型类上相应的 @EntityListeners(AuditingEntityListener.class) 注释。到目前为止效果很好。 dateCreated 会自动正确设置。

但是在运行 Junit 测试 时,我有时需要创建一个(测试)对象,其创建日期为过去的日期。我该如何存档?只能通过普通 JDBC?

最佳答案

如果您使用的是 Spring Boot,则可以模拟 EnableJpaAuditing 注释中使用的 dateTimeProvider bean。 Spring Data 使用此 bean 获取实体创建/修改时的当前时间。

@Import({TestDateTimeProvider.class})
@DataJpaTest
@EnableJpaAuditing(dateTimeProviderRef = "testDateTimeProvider")
public class SomeTest {

@MockBean
DateTimeProvider dateTimeProvider;

...

有必要定义实际的 testDateTimeProvider bean,但它根本不会被使用,因为您将使用 mock 代替。您可以像往常一样在之后编写 mockito 方法:

@Test
public void shouldUseMockDate() {

when(dateTimeProvider.getNow()).thenReturn(Optional.of(LocalDateTime.of(2020, 2, 2, 0, 0, 0)));


... actual test assertions ...

关于spring - 如何在过去设置@CreatedDate(用于测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42374387/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com