Citrus Framework - Можно ли назначить переменную вызова API из ответа? - PullRequest
0 голосов
/ 07 июня 2018

Я хочу отправить новый объект и использовать одно из полей в ответе для сопоставления моего URI с правильным resourceId.Я использую @variable ('resourceId') @ в пути, но он использует буквенную строку URI для выполнения запроса, а не заполняет resourceId из ответа POST.

Есть идеи, как заставить это работать?Спасибо.

Given message itemPostRequestSingle
        And <itemPostRequestSingle> header Content-Type is "application/json;charset=utf-8"
        And <itemPostRequestSingle> header citrus_http_method is "POST"
 -----> And <itemPostRequestSingle> header citrus_request_path is "/path/@variable('resourceId')@/path"
        And <itemPostRequestSingle> payload is
        """

        [
          {
            "relativeId": "${relativeId2}"
          }
        ]

        """

        Given message itemPostResponseSingle
        And <itemPostResponseSingle> header Content-Type is "application/json;charset=utf-8"
        And <itemPostResponseSingle> header citrus_http_status_code is "201"
        And <itemPostResponseSingle> header citrus_http_reason_phrase is "CREATED"
        And <itemPostResponseSingle> payload is

        """
        [
          {
            "relativeId": "${relativeId}"
          },
          {
            "relativeId": "${relativeId2}"
          }
        ]
    """


Scenario: Example
    Given variables
      | relativeId           | citrus:randomString(10,false) |
      | relativeId2          | citrus:randomString(10,false) |

    When <ApiClient> sends message <PostRequest>
    And <ApiClient> should receive Json message <PostResponse>
    And <ApiClient> sends message <itemPostRequestSingle>
    Then <ApiClient> should receive Json message <itemPostResponseSingle>

1 Ответ

0 голосов
/ 11 июня 2018

Вы смешиваете выражения соответствия проверки, такие как @variable('resourceId')@ и ссылки на переменные, такие как ${resourceId}.

Ваш itemPostRequestSingle должен использовать ссылку на переменную.Ваш PostResponse должен использовать выражение сопоставления проверки для извлечения идентификатора переменной resourceId.

Таким образом, идея состоит в том, чтобы извлечь значение resourceId с выражением сопоставления проверки @variable('resourceId')@ в порядкечтобы потом ссылаться на переменную в тестовом примере с помощью ${resourceId}.

...