Как обрабатывать много определений шагов Then?

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

  ...
  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() и минимальной перезаписи корнишона?

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


person Llewxamris    schedule 07.06.2018    source источник


Ответы (1)


Вы можете использовать именованные сообщения в разделе 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");
    }
}

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

person Christoph Deppisch    schedule 12.06.2018
comment
Использование XML-шаблонов — это то, к чему мы пришли вместо использования n количества Then/Ands. - person Llewxamris; 12.06.2018