我想针对带日期的搜索编写测试。我正在考虑类似
的测试代码assertThat(repository.findByBookingDateAfter(LocalDate.of(2016, 1, 1))).extracting("bookingDate").are(...));
其中类结构类似于以下内容:
public class Booking{
...
LocalDate bookingDate;
...
}
因为查询是在给定日期之后的任何预订,我的测试应该在日期之后检查该字段。经过一些在线搜索后,我没有看到任何有用的信息。我想知道我是否走在正确的轨道上。
有什么建议吗?
更新
稍后,我在build.gradle文件中更改了依赖项设置:
testCompile('org.springframework.boot:spring-boot-starter-test'){
exclude group: 'org.assertj'
}
testCompile group: 'org.assertj', name: 'assertj-core', version: '3.6.2'
拥有最新版本的assertj。
更新2:
以下是以" is"开头的任何方法的屏幕截图。 " isAfter"不在列表中。
答案 0 :(得分:0)
我会使用allMatch
或allSatisfy
断言来检查每个提取的日期是否在查询中使用的日期之后。
// set the extracted type to chain LocalDate assertion
assertThat(result).extracting("bookingDate", LocalDate.class)
.allMatch(localDate -> localDate.isAfter(queryDate)));
或
// use a lambda to extract the LocalDate to chain LocalDate assertion
assertThat(result).extracting(Booking::getBookingDate)
.allSatisfy(localDate -> assertThat(localDate).isAfter(queryDate));
第二个断言会得到更好的错误信息,它会显示错误的日期。