Будьте уверены, с Hamcrest-Date и DateTimeFormatter - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть тест «Уверенный в себе», в котором я пытаюсь проверить, что даты в ответе находятся между датами, переданными в параметрах. Я пытаюсь использовать Hamcrest-Date, но даты, возвращенные в моем ответе json, находятся в yyyy-MM-dd и Hamcrest-Date, кажется, находятся в Day, Date Month Year. Я не могу использовать .format (DateTimeFormatter.BASIC_ISO_DATE) в утверждении тела, потому что DateTimeFormatter преобразует его в строку, а Hamcrest-Date, похоже, не поддерживает его. Как это может работать?

Это ошибка в коде:

"Метод sameOrBefore (Date) в типе DateMatchers не применим для аргументов (String)"

        ValidatableResponse vr = given().

                param("startDate", LocalDate.now().minusMonths(1).format(DateTimeFormatter.BASIC_ISO_DATE)).
                param("endDate", LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE)).
                pathParam("accountid", accountId_DP).

                header("trace-id", UUID.randomUUID().toString()).
                header("organization", ORGANIZATION).
                header("session-id", SESSION_ID_734548).
                when().
                get("/transactions/{accountid}/pra").           
                then();

        LOGGER.info("test prefix to find in console {}", vr.extract().response().getBody().asString());

        vr.assertThat().statusCode(200).
        and().contentType(ContentType.JSON).
        and().
        body("transactions.postedDate.toString()", everyItem(DateMatchers.sameOrBefore(LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE)))).
        and().
        extract().
        response();

    }

1 Ответ

0 голосов
/ 10 апреля 2020

Отвечая на мой вопрос на случай, если кто-нибудь столкнется с этим. Ответ, который я нашел, заключался в том, чтобы не использовать Hamcrest-Date, а использовать Hamcrest Matcher lessThanOrEqualTo / HigherThanOrEqualTo


        ValidatableResponse vr = given().

                param("startDate", LocalDate.now().minusMonths(1).format(DateTimeFormatter.BASIC_ISO_DATE)).
                param("endDate", LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE)).
                pathParam("accountid", accountId_DP).

                header("trace-id", UUID.randomUUID().toString()).
                header("organization", ORGANIZATION).
                header("session-id", SESSION_ID_734548).
                when().
                get("/transactions/{accountid}/pra").           
                then();

        LOGGER.info("testPRAStartDateEndDate test prefix to find in console {}", vr.extract().response().getBody().asString());

        vr.assertThat().statusCode(200).
        and().contentType(ContentType.JSON).
        and().
        body("transactions.postedDate", everyItem(greaterThanOrEqualTo(LocalDate.now().minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))))).
        body("transactions.postedDate", everyItem(lessThanOrEqualTo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))))).
        and().
        extract().
        response();

...