Как включить двойные кавычки в значения параметров вызова - PullRequest
1 голос
/ 11 марта 2019

Я хочу передать значение параметра в функцию вызова (Фон), которая содержит двойные кавычки. Мой звонок: Background: * def userCreated = call read('classpath:create-user.feature') { name: '#(name)'} Таким образом, вызов будет {"имя": "имя" Питер ""} Я пробовал следующее:

  1. Определение имени в karate.config как: name: 'имя - "Питер", а затем вызовите read (' classpath: create-user.feature ') {name:' # (name) '} - результат: {"name": "имя \" Peter \ ""}

  2. Определение имени в karate.config как: name: 'имя есть \ "Peter \"', а затем вызовите read ('classpath: create-user.feature') {name: '# (name ) '} -> result: {"name": "имя \" Peter \ ""}

  3. Включение значения имени в вызове как: call read ('classpath: create-user.feature') {name: 'имя "Peter"'} -> result: {"name": " имя \ "Питер \" "}

  4. Включая значение имени в вызове как: call read ('classpath: create-user.feature') {name: 'имя есть \ "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,, но я не знаю, как определить или включить строку в качестве параметра в функции вызова, которая включает двойные кавычки. Любая идея? Спасибо.

1 Ответ

1 голос
/ 11 марта 2019

Это только правильное поведение, чтобы сохранить вашу строку как значение в 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 оно будет экранировано для строковых кавычек.

...