【发布时间】:2021-03-31 21:07:17
【问题描述】:
我有一个存储库方法,可以在其中获取两个日期之间的交易。我想模拟这个方法,但即使我在我的真实函数调用和模拟函数调用中设置了相同的日期,当 mockito 比较这些日期时它会导致 false 并且不会调用模拟方法。
这是我的测试代码:
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.set(Calendar.HOUR_OF_DAY,00);
cal.set(Calendar.MINUTE,00);
cal.set(Calendar.SECOND,00);
Date test = cal.getTime();
Date start = cal.getTime();
cal.set(Calendar.HOUR_OF_DAY,23);
cal.set(Calendar.MINUTE,59);
cal.set(Calendar.SECOND,59);
Date end = cal.getTime();
Mockito.when(transactionRepository.findAllByDateBetween(start,end, PageRequest.of(1,5))).thenReturn(
Arrays.asList(
new Transaction(1l, new Date(), new BigDecimal(10), "USD", new BigDecimal(80), "TRY"),
new Transaction(2l, new Date(), new BigDecimal(10), "GBP", new BigDecimal(100), "TRY")
));
这是我的服务代码:
Calendar cal = Calendar.getInstance();
cal.setTime(transactionDate);
cal.set(Calendar.HOUR_OF_DAY,00);
cal.set(Calendar.MINUTE,00);
cal.set(Calendar.SECOND,00);
Date start = cal.getTime();
cal.set(Calendar.HOUR_OF_DAY,23);
cal.set(Calendar.MINUTE,59);
cal.set(Calendar.SECOND,59);
Date end = cal.getTime();
return transactionRepository.findAllByDateBetween(start,end, PageRequest.of(page,pageSize)).stream().map(t -> t.toDto()).collect(Collectors.toList());
如何模拟此存储库方法并使其在以特定日期调用时返回所需的值?
【问题讨论】: