空手道测试框架:仅包含多行 JSON
Karate test framework: contains only with multiline JSON
我正在使用空手道测试框架。
此功能有效:
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]]
有什么方法既可以只使用包含又可以使用多行 JSONs 吗?提前致谢
是的,这是一个解析器边缘案例,只需分为 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 数组有意义,请考虑一下。
我正在使用空手道测试框架。
此功能有效:
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]]
有什么方法既可以只使用包含又可以使用多行 JSONs 吗?提前致谢
是的,这是一个解析器边缘案例,只需分为 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 数组有意义,请考虑一下。