具有默认值的嵌入表达式 (JSON/YML)

Embedded expression (JSON/YML) with default value

空手道提供了一个 API 方法 get 来获取变量值或默认值,如果前者不存在 karate.get("anyVariable", "默认值").

我想知道是否有任何类似的行为适用于 read JSON 或 YML 文件中的嵌入表达式,或者只是声明一个新的 json 模仿这些特征的变量。

我一直在阅读文档并尝试像这样的东西:

* def defaultvar = { key: #(notdefinedvariable || 'defaultValue') }

或在外部 yml 文件中,如下所示:

id: 1
random: '#(somevariable)'
defaultvale: '#(notdefinedvariable || defaultValue)'

我尝试了一些不同的组合和表达方式,但都没有成功,所以我不知道是否支持。我认为会很有用,如果需要我会做出贡献。

谢谢。

实际上 karate.get() 在嵌入表达式中是“可用的”,因此您可以在 JSON 文件中执行此操作:

{
    "foo": "#(karate.get('foo', 'default'))"
}

我个人认为您应该在读取文件之前预先设置任何变量和默认值,如下所示:

* def foo = karate.get('foo', 'default')
* def response = read('test.json')

和文件:

{
    "foo": "#(foo)"
}

是的,如果你不想输入那么多字符和做更多的逻辑,你可以定义一个自定义函数,但我认为这不会为你节省很多:

* def getOr = function(x, y){ return karate.get(x, y) }
* def response = read('test.json')

然后是 JSON 文件:

{
    "foo": "#(getOr('foo', 'default'))"
}