Исключить подпоток с помощью MUnit

Есть ли способ с помощью MUnit завершить тест и добавить утверждения при вызове подпотока? Я хотел бы разделить тесты на более мелкие части.


person Jarle Hansen    schedule 30.04.2016    source источник


Ответы (4)


Вам придется издеваться над результатом подпотока.

Для этого вам нужно использовать компонент Mock в MUnit.

Что он делает, так это то, что вам нужно будет определить ожидаемый результат после вызова ссылки подпотока/потока.

Вот краткий пример:

        <mock:when messageProcessor=".*:.*" doc:name="Mock Get Email Recipient">
        <mock:with-attributes>
            <mock:with-attribute name="doc:name" whereValue="#['getEmailRecipient']"/>
        </mock:with-attributes>
        <mock:then-return payload="[email protected]" mimeType="text/plain"/>
    </mock:when>

Это имитирует поток getEmailRecipient, возвращая статическое значение [email protected] при его вызове в тесте.

person Chad    schedule 02.05.2016

Не уверен, что это работает, но, возможно, вы могли бы попытаться смоделировать результат подпотока с помощью обработчика фиктивных сообщений, например

<mock:when messageProcessor="mule:sub-flow">
   <mock:with-attributes>
      <mock:with-attribute whereValue="<the_name_of_your_subflow>" name="doc:name"/>
   </mock:with-attributes>
</mock:when>

См. документацию здесь

Надеюсь, поможет.

/T

person Tony K    schedule 01.05.2016
comment
Вы знаете, как я могу сделать это в коде? Я написал тесты MUnit, используя код Java вместо XML. - person Jarle Hansen; 02.05.2016
comment
У вас есть документация здесь - person Tony K; 10.05.2016

Как сказали ребята, добиться желаемого можно с помощью мока. Просто чтобы было ясно, вы не остановите тест, вы просто определите поведение, которое должно быть выполнено, вместо фактического кода. Утверждения появятся позже в вашем тесте.

Вот несколько страниц документации, которые помогут вам в этой теме:

Наконец, несмотря на то, что каждый процессор сообщений MUnit имеет пример Java внизу каждой страницы документа, есть специальная страница о том, как написать тест MUnit на основе Java:

person Dds    schedule 03.05.2016

Документация здесь объясняет насмешливый поток и подпоток в xml.

Чтобы имитировать подпоток в Java, вы должны использовать сопоставитель org.mule.modules.interceptor.matchers.Matchers.contains внутри withValue.

Аргументы для содержимого должны быть именем вашего подпотока или любой строкой шаблона регулярного выражения.

        whenMessageProcessor("sub-flow")
            .withAttributes(
                    Attribute.attribute("name")
                    .withValue(Matchers.contains("my-subflow-name")))
            .thenThrow(new Exception("Test"));

Тот же трюк работает и для имитации подпотока в verifyMessageProcessor.

ХТХ!

person Manik Magar    schedule 01.08.2016