Karate 如何为空手道DSL中的模式断言提供动态键
我想通过在模式断言中添加一个变量来匹配我的响应。我试着给出“#(值)”,但没有效果Karate 如何为空手道DSL中的模式断言提供动态键,karate,Karate,我想通过在模式断言中添加一个变量来匹配我的响应。我试着给出“#(值)”,但没有效果 * def value = 3 Then match object == { result : { '#(value)' { firstName : '#string',
* def value = 3
Then match object ==
{
result : {
'#(value)'
{
firstName : '#string',
lastName : '#string'
}
}
}
我得到的异常是'path$.result。(#value)实际值:应为null{
名字:“#字符串”
姓氏:“#字符串”
}“您的JSON有严重问题。你真的在尝试使用动态键吗?那是不可能的 下面是一个工作示例,可以帮助您找出自己做错了什么:
* def actual = { result: { value: 3, foo: { firstName: 'John', lastName: 'Smith' } } }
* def value = 3
Then match actual ==
"""
{
result : {
value: '#(value)',
foo: {
firstName : '#string',
lastName : '#string'
}
}
}
"""
(编辑:)看起来请求确实是为了动态键,下面是一个更改的示例:
* def actual = { result: { 3: { firstName: 'John', lastName: 'Smith' } } }
* def fun =
"""
function(key) {
var temp = { result: {} };
temp.result[key] = { firstName: '#string', lastName: '#string' };
return temp;
}
"""
Then match actual == fun(3)
我需要为我的请求使用动态密钥。没有办法吗?有很多方法。我刚刚更新了我的答案,这个例子使用JS。您还可以查看stringreplace来创建一个字符串,然后键入convert将其转换为JSON。非常感谢。这真的帮助了我