如何在通话参数值中包含双引号

时间:2019-03-11 12:46:42

标签: karate

我想在包含双引号的调用函数(背景)中传递参数值。我的电话是: Background: * def userCreated = call read('classpath:create-user.feature') { name: '#(name)'} 因此,呼叫将为{“ name”:“ the name is” Peter“”} 我尝试了以下方法:

  1. 在karate.config中将名称定义为:名称:'名称为“ Peter”',然后调用read('classpath:create-user.feature'){名称:'#(名称)'} -结果:{“ name”:“名字是\” Peter \“”}

  2. 在karate.config中将名称定义为:name:'名称为\“ Peter \”',,然后调用read('classpath:create-user.feature'){name:'#(name )'}->结果:{“ name”:“名称为\” Peter \“”}

  3. 在他的呼叫中包括名称值:call read('classpath:create-user.feature'){名称:'名称为“ Peter”'}->结果:{“名称”:“名称是\“ Peter \”“}

  4. 在他的呼叫中包括名称值:call read('classpath:create-user.feature'){名称:'名称为\“ Peter \”'}->结果:{“名称” :“名称为\” Peter \“”}

  5. 在(背景)之前定义一个字符串:* string nameString ='名称为“ Peter”',然后调用read('classpath:create-user.feature'){name:'#(nameString)'}->与以前的结果相同。
  6. 在(背景)之前定义一个字符串:* string nameString ='名称为\“ Peter \”',然后调用read('classpath:create-user.feature'){name:'#(nameString)'} ->与以前的结果相同。

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

1 个答案:

答案 0 :(得分: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里面,才会用字符串引号将其转义。