Как справиться со многими определениями «Тогда»? - PullRequest
0 голосов
/ 08 июня 2018

Рассмотрим сценарий с несколькими определениями шагов «Тогда», предназначенными для использования в качестве утверждений против полезной нагрузки ответа:

  ...
  When a response is received
  Then the response should have an element "foo" with the content "bar"
  And the response should contain 1 "foobar" element
  And the response should have an element "rab" with the content "oof"
  ...

Каким образом Citrus должен обрабатывать неизвестное количество проверок?Можете ли вы определить несколько валидаторов перед вызовом receive()?Может ли это быть обработано с помощью validationCallback() и минимального перезаписи Gherkin?

Текущая реализация использует validationCallback() для сохранения полезной нагрузки в качестве переменной экземпляра, а затем проверки по переменной.Однако было бы гораздо лучше использовать силу Citrus.

1 Ответ

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

Вы можете использовать именованные сообщения в разделе Given или даже в фоне сценария:

Given message fooResponse
    And <fooResponse> payload is "Hi my name is Foo!"
    And <fooResponse> header operation is "sayHello"
    ...

Вы можете использовать именованное сообщение в сценарии, подобном следующему:

Scenario: Send and receive
  When <client> sends message <fooRequest>
  Then <client> should receive message <fooResponse>

Проверка всех элементов выполняется автоматически, когда средство проверки Citrus сравнивает полученное и ожидаемое содержимое сообщения.

Также вы можете извлечь создание сообщения для создателя сообщения Java POJO:

Background:
  Given message creator com.consol.citrus.FooMessageCreator

public class FooMessageCreator {
    @MessageCreator("fooResponse")
    public Message createEchoResponse() {
        return new DefaultMessage("Hi my name is Foo!")
                    .setHeader("operation", "sayHello");
    }
}

InВ случае, если вам нужно иметь дело с большими полезными нагрузками XML / Json, вы также можете загрузить эти полезные нагрузки из внешнего ресурса шаблона файла.Вместо того, чтобы устанавливать каждый элемент в отдельном явном операторе Then, вы должны использовать шаблонную проверку сравнения, которая также может использовать разделы @ignore@ для игнорирования частей сообщения, которые не имеют отношения к проверке.

...