如何 Mock/Assign Java 单元测试中的 LocalDate 变量

How to Mock/Assign LocalDate variable in Unit Test in Java

我有一个 LocalDate 变量,它是从配置属性中填充的。我需要对使用此变量的方法进行测试。但它会抛出错误 LocalDate cannot be mocked. 我浏览了 Stack Overflow 和其他网站上的各种文章,但到处都在谈论 DateTimeProviders 无法使用,因为我正在为客户维护现有项目。现在,问题是我需要知道如何将 Mock 分配给 Test

中 class 内的变量 endDate

我的Class

public class MyClass implements MyClassService{

    @Value("#{T(java.time.LocalDate).parse('${configuration.entityconfig.end_date}')}")
    private LocalDate endDate;

    @Autowired
    public WpLateDepartureObligationServiceImpl(....){
         //some things
    }    

    public void createApplications(MyEntitity myEntity) {

    if (myEntity.getExpiryDate.isBefore(endDate)){
         return;
    }

}

这是单元测试区的样子

  @InjectMocks
     private MyClass myClassService;

     @Test
     public void createApplicationTest() {
        MyEntitity myEntity=new MyEntitity ();
        myEntity.setId(1L);
        myEntity.setExpiryDate(LocalDate.parse("2020-04-05"));    

        myClassService.createApplications(myEntity);
     }

我真的不知道如何发送值。我试着嘲笑它,但它不起作用。有没有办法可以从方法 createApplicationTest?

发送 endDate

我使用

解决了这个问题
 ReflectionTestUtils.setField(myClassService,endDate,LocalDate.Now());

尽管我无法从配置中导入数据,但这有助于我将值发送到来自 test class.

的变量