替换 graphql 中的占位符会忽略枚举和字符串化
Replace placeholder in graphql ignores enums and stringifies
我正在读取一个 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)。
我正在读取一个 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)。