ПАКТ: как сопоставить определенный формат даты и времени в пакте jvm DSL?

#java #pact

#java #пакт

Вопрос:

Использование pact jvm DSL с загрузкой spring (.timestamp (имя, формат, пример) Я могу указать оба:

 .timestamp("start", "dd-MM-yyyyy'T'HH:mm:ss'Z'", Instant.parse("2020-10-06T20:48:58.402Z"))
  

и

 .timestamp("start", "yyyy-MM-dd'T'HH:mm:ss'Z'", Instant.parse("2020-10-06T20:48:58.402Z"))
  

или даже

 .timestamp("start", "dd-MM-yyyyyyy'T'HH:mm:ss'Z'", Instant.parse("2020-10-06T20:48:58.402Z"))
  

и тест все еще проходит.

Мои настоящие ошибки службы поставщика, если вы отправляете дату dd-MM-гггг, а не гггг-ММ-дд, но я не могу понять, как вы должны заставить тест на стороне потребителя завершиться неудачей, когда он неправильно отправляет временную метку JSON неправильного формата в API поставщика.

Т.е. бит, который выглядит так:

     @Test
    @PactTestFor(pactMethod = "postTheThing")
    public void pactWithProvider() {
      client.makeApiCall(testPayload);
    }
  

Комментарии:

1. Я думаю, что тестовые примеры пройдут, потому что pact framework проверяет не данные, а только элементы json в ответе по сравнению с ожидаемым файлом pact. Например, поле start изменено на что-то StartDate, но ожидаемое поле в файле pact равно «start», тогда ваш тестовый пример завершается с ошибкой.

Ответ №1:

Потребительские тесты завершаются неудачей, только если вы добавляете некоторую проверку. Предполагается, что пакты преобразуются в заглушки на стороне потребителя, и все.

Просто добавьте некоторую mockition #verify проверку в свой потребительский тест.