Каркас теста по каратэ: содержит только многострочный JSON - PullRequest
1 голос
/ 25 апреля 2019

Я использую тестовую среду для каратэ.

Эта функция работает:

Given path '/endpoint'
When method GET
Then match response.list contains only { "field1": "value1", "field2": "value2"}

Но я не хочу писать весь JSON в одну строку, поэтому я попытался:

Given path '/endpoint'
When method GET
Then match response.list contains only
"""
{
  "field1": "value1",
  "field2": "value2"
}
"""

Я получаю эту ошибку:

 Tests in error: 
  example.feature:11 - more than one step-definition method matched: match response.list contains only - [public void com.intuit.karate.StepActions.matchDocstring(java.lang.String,java.lang.String,java.lang.String) [response.list contains , only], public void com.intuit.karate.StepActions.match(java.lang.String,java.lang.String,java.lang.String) [response.list , contains,  only]]

Есть ли какой-либо способ использовать только содержит, а также использовать многострочные JSON?Заранее спасибо

1 Ответ

2 голосов
/ 25 апреля 2019

Да, это край синтаксического анализатора, просто разбить на 2 этапа:

Given def response = { list: { "field1": "value1", "field2": "value2" } }
And def expected =
"""
{ "field1": "value1", "field2": "value2"}
"""
Then match response.list contains only expected

Обратите внимание, что contains only имеет смысл только для массивов JSON, подумайте об этом, пожалуйста.

...