我该如何实现以下
* eval if(TestCaseType == "negative") karate.match(messageConstructedFromRequestData_N1,messageFromApiResponse_N1)
* eval if(TestCaseType == "positive") karate.match(messageConstructedFromRequestData_P1,messageFromApiResponse_P1)
我基本上想在满足特定条件时匹配变量。 我尝试过了
* eval if(TestCaseType == "negative-2") result = karate.match(messageConstructedFromRequestData_N2,responseMessage_N2)
当我打印结果时,我得到的结果为“ true”,但是我无法将其分配给变量,然后断言结果。像这样
* def y = result
* match y == { pass: true, message: null }
答案 0 :(得分:0)
我认为您正在过度设计测试。把事情简单化。分为多个步骤。例如:
* def first = { available: true, collection: true }
* def second = { code: 'foo', message: 'bar' }
* def testType = 2
* def response = second
* def expected = testType == 2 ? { code: '#string', 'message': '#string' } : { available: '#boolean', collection: '#boolean' }
* match response == expected
仔细查找文档中“条件逻辑”部分。记住,如果确实需要,可以调用另一个功能(或Java代码)来简化操作。
但老实说,我认为您的测试过于复杂。
答案 1 :(得分:-1)
def conditional =
"""
function() {if(result.pass){
var arr = []
arr[0] = karate.match(response.businessData.productRule.productName, '#string').pass;
arr[1] = karate.match(response.businessData.productRule.productName, '#stdfsring').pass;
return arr;
}
}
"""
* def callFunction = call conditional
* print callFunction
* match callFunction !contains false