Утверждение против большого динамического отклика - PullRequest
2 голосов
/ 26 апреля 2019

У меня есть очень большой массив ответов, против которого я хочу заявить, но не зная порядка.У меня есть переменная с ожидаемыми значениями ответа, поэтому я могу выполнить одно гигантское сравнение, но я не могу загрузить весь ответ и сравнить его со всей ожидаемой переменной ответа одновременно.

* def obligationsQuery = Java.type("tests.account.sql.Obligations").getObligations(division, account)
    * def getObligations = db.readRows(obligationsQuery)

    Given path "account", "v1", "accounts", systemId, "obligations"
      And header api-key = gatewayKey
    When method GET
    Then status 200
      And match $.data != null
      And match $.data[*].transactionType contains any "<transactionTypeResponse>"
      And match $.data[*] contains only getObligations

    Examples:
      | description | transactionType | transactionTypeResponse |
      | Invoice     | 001             | invoice

Я получаю ошибку:

get_obligations_collection.feature:49 - path: $.data[*][*], actual: [{"object1"}, {"object2"}, {"etc"}], expected: {"object1"}, reason: actual value does not contain expected

Я также пытался: And match each $.data[*] contains only getObligations Но тогда я получаю:

get_obligations_collection.feature:49 - path: $[0], actual: [{"object1"}, expected: [{"object1"}, {"object2"}, {"etc"}, reason: actual value is not list-like

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Я предполагал, что contains only покажет полное значение моей переменной, но разумно, он показывает только объект, который не соответствует объекту ответа API.Был в состоянии проверить это через более простое утверждение, а затем, проверив сообщение об ошибке, увидел, что в идентификаторе отсутствует заполнение, которое добавляет API, а базы данных нет.

Как обычно, просто присматриваясь к даннымвозвращено дает простое объяснение.

0 голосов
/ 26 апреля 2019

Полагаю, $.data - это массив JSON, поэтому нет необходимости использовать json-path для повторного получения данных в другой массив, вызывая как $.data[*].

,

And match $.data contains only getObligations

должно работать.

Если это все еще не работает, пожалуйста, предоставьте некоторые правильные значения response и getObligations для дальнейшего исследования.

...