#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
проверку в свой потребительский тест.