Меня смущает поведение разделов body и bodyMatchers.
Например, для ответа по контракту.
Я хочу, чтобы у моего потребителя (заглушки) было тело из файла (точный ответ от заглушки), а у производителя - только некоторые сопоставители для ответа (для проверки ответа).
1 случай, который я пробовал:
...
body (
file('__files/someFile.json')
)
bodyMathers {
jsonPath('$.[cards[0]].cardType', byRegex('[A-Z]{2}')
}
Ожидаемый - результат:
- В тесте есть совпадения для ответа - false
- В тесте нет соответствия телу - false
- Заглушка имеет тело ответа из файла - true
- У заглушки нет совпадений - правда
Мой обходной путь для тела json и ответ раздел:
добавить что-то для тела производителя или я не получу совпадений при ответе теста:
body (
$(
consumer(
file('__files/someFile.json')
),
producer(
cards: [
cardType: anyNonEmptyString()
]
)
)
)
bodyMathers {
jsonPath('$.[cards[0]].cardType', byRegex('[A-Z]{2}')
}
Вскоре проблема, которую я вижу - bodyMatchers требует body , но это не интуитивно понятно.
Ответ может иметь только совпадения для производителя (тесты), а запрос может иметь только совпадения для потребителя (заглушки) ).
Я думаю, это должно работать так:
body (
$(
consumer(
file('__files/someFile.json')
)
)
)
bodyMathers {
jsonPath('$.[cards[0]].cardType', byRegex('[A-Z]{2}')
}
Обновлено
request {
body(
file('__files/offer13-request.xml').asString()
)
bodyMatchers {
xPath('/a/b/c/text()', byRegex('123'))
}
}
И я вижу на окурках:
{
"matchesXPath" : {
"expression" : "/soap:Envelope/@xmlns:soap",
"equalTo" : "http://schemas.xmlsoap.org/soap/envelope/"
}
}, {
"matchesXPath" : {
"expression" : "/a/b/c/text()",
"matches" : "123"
}
}
Но мне нужен только мой сопоставитель "expression" : "/a/b/c/text()"