在空手道 DSL 中,如何在 java 参数调用中传递变量时转义单引号
Posted
技术标签:
【中文标题】在空手道 DSL 中,如何在 java 参数调用中传递变量时转义单引号【英文标题】:in Karate DSL, how do you escape single quotes when passing a variable within a java argument call 【发布时间】:2017-11-01 21:21:03 【问题描述】:我正在尝试添加对数据库的调用,作为 API 项目工作中端到端工作的一部分。在断言方法中作为参数传递的变量中,我将如何转义单引号。我尝试了以下方法,但没有奏效。
assert JavaClass.executeSQLQuery('SELECT COUNT(*) As Result FROM PartType WHERE reference = 'evaluate';', '1') == true错误是它无法评估值内的单引号
其他尝试
定义 sqlQuery =
""" 选择 COUNT(*) 作为结果 FROM PartType WHERE 参考 = 'updateerferencee'; """
断言 JavaMethods.executeSQLQuery(sqlQuery, '1') == true错误:见附件
【问题讨论】:
天啊。这不是空手道问题。让这成为你的功课,你为什么不和你组织中擅长编程的人谈谈,你会弄清楚的。天哪。 您好,您能否解释一下第二个示例如何不是“空手道”问题?它清楚地说明了如何使用内置的空手道方法 * def 定义变量。我知道第一个与空手道没有特别关系,这就是为什么我在问题中包含 java 标记。最亲切的, 没关系。我看到了问题。我很困惑,因为我正在调用一个 java 方法,但参数被评估为 javascript,所以我必须使用 \' 转义单引号。我是 javascript 新手,很抱歉提出一个非空手道问题。 酷。是的,如果它对您有帮助,您也可以在 JS 中使用双引号,这意味着您可以混合使用单引号而不必转义它们 - 这是一个示例:github.com/intuit/karate/issues/217#issuecomment-337077723 【参考方案1】:通过我的新手编程技能,我意识到我正在尝试调用一个被评估为 javascript 的 java 方法,并且整个事情都融入了空手道迷你语言(这让我很困惑)。答案已经过测试并在下面工作。
assert JavaClass.executeSQLQuery('SELECT COUNT(*) As Result FROM PartType WHERE reference = \'evaluate\';', '1') == true
【讨论】:
以上是关于在空手道 DSL 中,如何在 java 参数调用中传递变量时转义单引号的主要内容,如果未能解决你的问题,请参考以下文章
空手道 DSL - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]
空手道 DSL 框架是不是能够将 POST 请求作为 url 编码格式传递?