Проблема каратэ с соответствующими входами и выходами - PullRequest
1 голос
/ 20 апреля 2020

Я могу что-то упустить, но есть одна проблема, которую я замечаю. У меня есть входная полезная нагрузка для тестируемой конечной точки, полученная из файла JSON. Вот входная полезная нагрузка:

{
    "KJ01": {
        "vin": "MMTestingVIN00001",
        "sskwngtrghastsp": "20200419133000",
        "wngdetail": [
            {
                "wngsysmbol": "WASH",
                "wngclass": "S",
                "wngcondflg": "1"
            }
        ]
    }

И это часть ответа, которую я получаю

{
  "items": [
    {
      "vin": "MMTestingVIN00001",
      "dealerCode": "1",
      "nmscCode": "1",
      "timestamp": "2020-04-19T13:30:00.000Z",
      "warning": {
        "warningLightType": {
          "symbol": "WASH",
          "type": "S",
          "priority": "1"
        }
      }
    }
  ]
}

Ответ содержит много объектов в массиве элементов, и я нахожу индекс массива число, где я получаю объект с VIN = MMTestingVIN00001 Итак, допустим, что требуемый объект ответов был найден по индексу 10 в массиве элементов.

  • def foundAt = 10

Когда я делаю следующее:

* def Payload = read(datafile)
* json JsonPayload = Payload
# expecting WASH == WASH
* match response.items[foundAt].warning.warningLightType.symbol == JsonPayload.KJ01.wngdetail[0].wngsysmbol 

выдает ошибку:

 Could not parse token starting at position 7. Expected ?, ', 0-9, *

Но когда я явно упоминаю индекс № 10 в моем выражении соответствия на LHS, то есть

match response.items[10].warning.warningLightType.symbol == JsonPayload.KJ01.wngdetail[0].wngsysmbol 

или я поменяю LHS на RHS, то есть вместо совпадения output == input, если я сопоставлю input == output, т.е.

match JsonPayload.KJ01.wngdetail[0].wngsysmbol == response.items[foundAt].warning.warningLightType.symbol 

в обоих вышеописанных случаях, это работает.

Итак, в заключение, если мы выполним совпадение outputexpression == inputexpression, где у outputexpression есть индекс массива, на который ссылается переменная типа 'foundAt' ie, он имеет что-то вроде - items [foundAt], ему это не нравится и выдает ошибка.

As Обходной путь в таких случаях, когда мы даем соответствие inputexpression == outputexpression, тогда это работает.

Есть ли что-то, что мне не хватает здесь? Я прочитал документацию о том, какими должны быть LHS и RHS выражений совпадений, но не смог использовать эту информацию для изменения моих тестов.

Может кто-нибудь помочь мне, пожалуйста? Я надеюсь, что теперь я в порядке с моей проблемой.

1 Ответ

2 голосов
/ 20 апреля 2020

Пожалуйста, ознакомьтесь с документацией о том, как должна быть установлена ​​левая часть оператора сравнения. https://github.com/intuit/karate#match и-переменные

...