Как включить двойные кавычки в значения параметров вызова

#karate

#каратэ

Вопрос:

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

  1. Определяем имя в karate.config как: name: ‘имя «Питер»‘, а затем вызываем read(‘classpath:create-user.feature’) { name: ‘#(name)’} — результат: {«name»: «имя «Питер»»}

  2. Определяем имя в karate.config как: name: ‘имя «Peter»‘, , а затем вызываем read(‘путь к классу:create-user.feature’) { name: ‘#(имя)’} -> результат: {«name»: «имя «Peter»»}

  3. Включение значения имени в вызов как: вызов read(‘classpath:create-user.feature’) { name: ‘имя «Питер»‘} -> результат: {«name»: «имя «Питер»»}

  4. Включение значения имени в вызов как: вызов read(‘classpath:create-user.feature’) { name: ‘имя «Peter»‘} -> результат: {«name»: «имя «Peter»»}

  5. Определяем строку перед (фоном): * string nameString = ‘имя «Питер»‘, а затем вызываем read(‘classpath:create-user.feature’) { name: ‘#(nameString)’} -> тот же результат, что и предыдущие.
  6. Определяем строку перед (фоном): * string nameString = ‘имя «Питер «‘, а затем вызываем read(‘classpath:create-user.feature’) { name: ‘#(nameString)’} -> тот же результат, что и предыдущие.

Я также проверил https://github.com/intuit/karate#type-conversion , но я не знаю, как определить или включить строку в качестве параметра в функцию вызова, которая включает двойные кавычки. Есть идеи? Спасибо.

Ответ №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 оно будет экранировано для строковых кавычек.