MUNIT4:java.util.LinkedHashMap 无法转换为 org.mule.extension.http.api.HttpRequestAttributes

MUNIT4 :java.util.LinkedHashMap cannot be cast to org.mule.extension.http.api.HttpRequestAttributes

正在尝试 munit 设置事件处理器;

<munit:behavior >
            <munit:set-event doc:name="Set Event" doc:id="3ffb4e58-3938-4316-9533-f0031ad492a6" >
                <munit:payload value='{ .. }' encoding="UTF-8" mediaType="application/json" />
                <munit:attributes value="#[{headers:{'application-id':'test'},method:'POST'}]" />

            </munit:set-event>

它能正确读取我的负载和属性。我放了一个日志并检查了。 但在那之后我得到了;

ERROR 2020-05-21 15:46:23,622 [[MuleRuntime].cpuLight.05: [xxxx-api-v1].raml-main.CPU_LITE @41d3521e] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message               : java.util.LinkedHashMap cannot be cast to org.mule.extension.http.api.HttpRequestAttributes.
Element               : raml-main/processors/4 @ xxxxxx-api-v1:api.xml:57
Element XML           : <apikit:router config-ref="raml-config"></apikit:router>
Error type            : MULE:UNKNOWN
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to org.mule.extension.http.api.HttpRequestAttributes
    at org.mule.module.apikit.Router.processEvent(Router.java:133)
    at org.mule.module.apikit.Router.processWithExtension(Router.java:122)
    at org.mule.runtime.core.privileged.processor.MessageProcessors.lambda$flatMap(MessageProcessors.java:338)

这是为什么?我的设置事件处理器出了什么问题?

看起来 MUnit 测试试图通过设置表达式中收到的 HTTP 请求的属性来模拟 HTTP 侦听器。该表达式转换为 Java 映射。但是 APIKit 期望实现 HTTP Listener 属性的实际 class。以这种方式模拟是行不通的。

要以正确的方式实现它,请在 Anypoint Studio 中右键单击 APIKit 路由器,然后单击菜单项中的 Create Test Suite for XXX.xml from API specification。这将为您的测试创建框架。

或者您可以在 Anypoint Exchange 中查看此示例:https://anypoint.mulesoft.com/exchange/org.mule.examples/testing-apikit-with-munit/