如何在调用参数值中包含双引号

问题描述 投票:1回答:1

我想在包含双引号的调用函数(背景)中传递参数值。我的电话是:Background: * def userCreated = call read('classpath:create-user.feature') { name: '#(name)'} 所以电话会是{“name”:“名字是”Peter“”}我试过以下内容:

  1. 在karate.config中将名称定义为:name:'name is“Peter”',然后调用read('classpath:create-user.feature'){name:'#(name)'} - result:{“name “:”这个名字是“彼得”,“}
  2. 在karate.config中将名称定义为:name:'名称为\“Peter \”',然后调用read('classpath:create-user.feature'){name:'#(name)'} - > result :{“name”:“名称是\”Peter \“”}
  3. 在他调用时包括名称值:call read('classpath:create-user.feature'){name:'name is“Peter”'} - > result:{“name”:“name is”Peter \ “”}
  4. 在他调用时包括名称值:call read('classpath:create-user.feature'){name:'name is \“Peter \”'} - > result:{“name”:“名称是\ “彼得\”“}
  5. 在(Background)之前定义一个字符串:* string nameString ='名称是“Peter”'然后调用read('classpath:create-user.feature'){name:'#(nameString)'} - >结果与以前的。
  6. 在(Background)之前定义一个字符串:* string nameString ='名称是\“Peter \”'然后调用read('classpath:create-user.feature'){name:'#(nameString)'} - >相同结果如前所述。

我也检查了https://github.com/intuit/karate#type-conversion,但我不知道如何定义或包含一个字符串作为包含双引号的调用函数中的参数。任何的想法?谢谢。

karate
1个回答
1
投票

这只是正确的行为,为了将您的字符串保存为包含"的JSON中的值,必须正确转义它。

逃离\将在"之前使用

它不会改变任何东西

* def name = ' karate is created by "Peter".'
 # karate is created by "Peter".
* def callInput = {"name" : "#(name)"}
# {"name" : "karate is created by \"Peter\"."}
* print callInput.name
# karate is created by "Peter".
* match callInput.name == name

它的外部相同,只有在JSON内部,它才会被转义为String引号。

© www.soinside.com 2019 - 2024. All rights reserved.