2017-02-17 1 views
0

Я хочу написать тест против поиска с датой. Я имею в виду тестового кода что-то вродеAssertThat использование в сравнении даты

assertThat(repository.findByBookingDateAfter(LocalDate.of(2016, 1, 1))).extracting("bookingDate").are(...)); 

где структура класса является то, как следующие:

public class Booking{ 
    ... 
    LocalDate bookingDate; 
    ... 
} 

Поскольку запрос на любые заказы после указанной даты, мой тест должен проверить поле действительно позже даты. После некоторого онлайн-поиска я не вижу никакой полезной информации. Мне интересно, нахожусь ли я на правильном пути или нет.

Любые предложения?

Update:

Позже я изменить настройки зависимостей является нижеуказанных в файле 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:

Ниже приведен снимок экрана любых методов, начиная с "есть". «IsAfter» отсутствует в списке.

enter image description here

+1

Не могли бы вы расширить свой пример более ** кодом ** и описанием того, что конкретно вы хотите * проверить *, что вы ** ожидаете ** и что вы уже ** пробовали **? В зависимости от того, какая ** дата api ** вы используете (я вижу «LocalDate» в вашем примере), вы можете посмотреть документацию для [Joda-Time Assertion] (https: //joel-costigliola.github .io/assertj/assertj-joda-time.html) или [примеры кода для Java 8 Дата и время API] (https://github.com/joel-costigliola/assertj-examples/blob/master/assertions-examples /src/test/java/org/assertj/examples/Java8DateTimeAssertionsExamples.java). – Riggs

+0

Спасибо. Я добавляю более подробные сведения в свой вопрос. – vic

ответ

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)); 

вы получите лучшее сообщение об ошибке со вторым утверждением, он покажет неисправную дату.

+0

Есть allMatch и allSatisfy часть assertj? Я не могу найти их в каких-либо зависимостях в моем проекте. Кроме того, код localDate -> assertThat (localDate) не может передать компилятор. – vic

+0

они находятся в 3.6.2, см. Http://joel-costigliola.github.io/assertj/core-8/api/org/assertj/core/api/AbstractIterableAssert.html#method.summary –

+0

После замены на версию , Я могу видеть allMatch и allSatisfy, но не isAfter. Я просматриваю все доступные методы, но не могу найти подходящий. – vic

Смежные вопросы