在空手道 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 - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]

空手道 DSL 框架是不是能够将 POST 请求作为 url 编码格式传递?

如何在空手道 UI 测试中启用 acceptInsecureCerts

如何从空手道中的Java API中检索值数组?

如何将黄瓜报告实用程序与空手道框架相结合?