替换graphql中的占位符会忽略枚举和字符串



我正在读取一个graphql查询并将其存储在一个变量中,然后在存储的graphql中替换一个变量。替换是字符串化的,尽管中有一个枚举

query() {
blabla(
varToReplace: < varToReplace >
queryOptions: {}
) {
boemba {
id
)
}
}
}

我要读入的场景部分看起来像这个

...
Given def query = read(karate.properties['user.dir'] + myGraphQL)
*replace query. varToReplace = [{value: "boemba", matching: ONLY}]
...

但是实际执行的查询并不包括ONLY在对象的匹配关键字中;ONLY";这是字符串化的值。

query() {
blabla(
varToReplace: [{"value":"boemba", "matching":"ONLY"}]
) {
boemba {
id
)
}
}
}

是否有一种方法可以将值替换为与提供的值完全相似的值,而不将其全部字符串化?

replace关键字处理纯字符串,不支持Java或JS类型。所以试试这个(注意单引号(:

* replace query.varToReplace = '[{ value: "boemba", matching: ONLY }]'

请注意,如果内置的replace不适合您,您可以编写自己的JS实用程序函数(甚至Java(。

最新更新