MuleSoft - как отловить ошибку / исключение в тесте Munit? - PullRequest
0 голосов
/ 13 декабря 2018

В поток я поднял ошибку и хотел бы проверить ее в Munit.

Документация не содержит и не объясняет этот конкретный случай.

что такое текстчто мне нужно вставить в:

  • ожидаемый тип ошибки

  • ожидаемое исключение

enter image description here

1 Ответ

0 голосов
/ 13 декабря 2018

Все ошибки, выданные в Mule, содержат метаданные, включая ТИП.

Например, вот список некоторых определенных HTTP: ошибок, выданных модулем HTTP:

  • HTTP: UNSUPPORTED_MEDIA_TYPE

    HTTP: CONNECTIVITY

    HTTP: INTERNAL_SERVER_ERROR

    HTTP: METHOD_NOT_ALLOWED

Документация каждого модуля должна содержать все конкретные типы ошибок, выдаваемых этим модулем.Вот один пример HTTP: https://docs.mulesoft.com/connectors/http/http-documentation#throws

На вашем скриншоте, например, он использует модуль APIKIT.Модуль APIKIT снова имеет свои ошибки.Думайте об этом как об определенных Java-классах, генерирующих пользовательские исключения, специфичные для этого класса.

А вот полный список основных типов ошибок, которые вы можете перехватить, например, EXPRESSION:

https://docs.mulesoft.com/mule-runtime/4.1/mule-error-concept

Атрибут ОжидаемыйErrorType ожидает идентификатор типа ошибки, который должен быть определен внутри тестируемого приложения.Этот атрибут позволяет вам проверить, что определенный тип ошибки в вашем приложении выбрасывается.Если вы определите errorType, который не существует в вашем приложении, тест не будет запущен.

<munit:test name="MUnit-test-suite"
  description="Test Error Type"
  expectedErrorType="FTP:ILLEGAL_PATH">
  ...
</munit:test>

В этом тесте типа ошибки предполагается, что операция FTP вызовет ошибку FTP: ILLEGAL_PATH.

Вам нужно будет настроить это для ожидаемого вами конкретного типа.

Атрибут expectException ожидает буквальное имя класса исключения (каноническая форма).Когда вы предоставляете буквальное значение, оно должно принимать форму канонического имени класса ожидаемого исключения.В этих случаях Mule всегда генерирует исключение MuleMessagingException.MUnit проверяет предоставленное имя класса, если основная причина генерируемого исключения MuleMessagingException точно такого же типа.

<munit:test name="testExceptions"
  description="Test Exceptions"
  expectedException="java.lang.RuntimeException">
  ...
</munit:test>

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

Так что вам не нужно предоставлять оба.

...