Почему каратэ снимает символы с названия моих полей? - PullRequest
1 голос
/ 13 февраля 2020

Что-то странное происходит с одним из моих каратэ тестов. У меня есть довольно много, которые я унаследовал (а не написал сам), и они в основном все работают нормально. Мое приложение использует GraphQL , и я изменяю существующую функцию мутации, чтобы добавить аргумент. Новый аргумент - это список DestinationInput, определенный следующим образом:

createScheduledTitles(titles: [ScheduledTitleInput!]!, destinations: [DestinationInput]!): [ScheduledTitle!]!

Вот как я настраиваю свои аргументы в своем сценарии каратэ:

        * def input =
        """
         {titles: [ {
          ...
          ],
          destinations: [
            {
                'destinationType': "od", 
                'brightcovePublish': "true" 
            }
          ]
         }
        """

Это отклоняется конец сервера (java) с:

The variables input contains a field name 'stinationType' that is not defined for input object type 'DestinationInput' 

Ну да, конечно, но я предоставляю 'destinationType', а не 'stinationType'. Когда я проверяю журнал того, что было отправлено, я вижу это:

        "destinations": [
          {
            "stinationType": "od",
            "ightcovePublish": "true"
          }
        ]

А? Где эти начальные символы go? С тех пор я пробовал каждую комбинацию кавычек (двойных, одинарных, ни одного) в именах полей и аргументах. Я пробовал другое форматирование строки et c. Некоторые небольшие различия, некоторые комбинации оставляют кавычки в имени поля, поэтому я вижу stinationtype\' в качестве имени поля по ошибке, а иногда оно жует больше букв спереди. Я перепечатал имена полей на случай, если там отредактировал несколько скрытых символов. Пока что ничто не приводит меня к успеху. У меня есть другие рабочие примеры такого рода вещей, и я скопировал их формат, но все равно не радуюсь. Все, что происходит, находится на стороне клиента, потому что журнал показывает неверные имена полей как отправленные. Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 13 февраля 2020

Dev Каратэ здесь - это странно, никогда не видел ничего подобного. Имейте в виду, что это может быть подлинной ошибкой на стороне сервера - но я полагаю, что вы посмотрели журнал запросов / http.

Мое другое предположение, не видя всей структуры проекта, может заключаться в том, что может быть какая-то пользовательская Java / JS код, который предварительно обрабатывает запрос, общий для проектов GraphQL. Попробуйте сформировать cURL-запрос, который работает, шаг 2 - преобразовать его в простой (жестко запрограммированный) тест по каратэ. и если вы можете управлять этим процессом, мы можем посмотреть на него: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

Но я только что попытался использовать ваш образец JSON в тесте, который вы можете повторить (даже HTTP POST ). Так что попробуйте вставить это в fre sh Scenario:

Scenario:
* def input =
        """
         {titles: [
            {}
          ],
          destinations: [
            {
                'destinationType': "od", 
                'brightcovePublish': "true" 
            }
          ]
         }
        """
* print input
* url 'https://httpbin.org/post'
* request input
* method post

Что приводит к:

14:26:59.370 [main] INFO  com.intuit.karate - [print] {
  "titles": [
    {
    }
  ],
  "destinations": [
    {
      "destinationType": "od",
      "brightcovePublish": "true"
    }
  ]
}

14:26:59.614 [main] DEBUG com.intuit.karate - request:
1 > POST https://httpbin.org/post
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 84
1 > Content-Type: application/json; charset=UTF-8
1 > Host: httpbin.org
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/1.8.0_231)
{"titles":[{}],"destinations":[{"destinationType":"od","brightcovePublish":"true"}]}

14:27:00.890 [main] DEBUG com.intuit.karate - response time in milliseconds: 1274.99
1 < 200
1 < Access-Control-Allow-Credentials: true
1 < Access-Control-Allow-Origin: *
1 < Connection: keep-alive
1 < Content-Length: 696
1 < Content-Type: application/json
1 < Date: Thu, 13 Feb 2020 08:57:00 GMT
1 < Server: gunicorn/19.9.0
{
  "args": {}, 
  "data": "{\"titles\":[{}],\"destinations\":[{\"destinationType\":\"od\",\"brightcovePublish\":\"true\"}]}", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept-Encoding": "gzip,deflate", 
    "Content-Length": "84", 
    "Content-Type": "application/json; charset=UTF-8", 
    "Host": "httpbin.org", 
    "User-Agent": "Apache-HttpClient/4.5.11 (Java/1.8.0_231)", 
    "X-Amzn-Trace-Id": "Root=1-5e450f5c-18d2618834da3a7afdd3402a"
  }, 
  "json": {
    "destinations": [
      {
        "brightcovePublish": "true", 
        "destinationType": "od"
      }
    ], 
    "titles": [
      {}
    ]
  }, 
  "origin": "103.15.250.10", 
  "url": "https://httpbin.org/post"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...