Mule 4:在 MUnit 测试中尝试向 HTTP 侦听器发送请求时出现 HTTP:SERVICE_UNAVAILABLE

问题描述

我正在尝试为使用 HTTP 侦听器作为消息源的流创建 munit 测试。

当我运行测试时,我得到:

org.mule.munit.runner.model.TestExecutionException: Error [HTTP:SERVICE_UNAVAILABLE] while running test 'AccServiceIntegrationTest-AccServiceFlowTest':HTTP GET on resource 'http://localhost:8303/AccService' 失败:服务不可用 ( 503)。

我的 HTTP 侦听器配置如下所示:

<http:listener-config name="ApiHttpListenerConfig" doc:name="HTTP Listener config" doc:id="b72fd4c2-e250-4591-b780-de4a40f3a805" >
    <http:listener-connection host="localhost" port="8303" />
</http:listener-config>

和我的听众本身:

<http:listener doc:name="Listener" doc:id="91f3dc92-d221-4961-b33e-61e65040f481" config-ref="ApiHttpListenerConfig" path="/AccService"/>

我测试中的 HTTP 请求配置如下所示:

<http:request-config name="HTTPTestRequestConfiguration" doc:name="HTTP Request configuration" doc:id="d7ccc980-3103-4367-8ecc-e0c031f093e9">
    <http:request-connection host="localhost" port="8303" />
</http:request-config>

以及请求本身:

<http:request method="GET" doc:name="Request" doc:id="912fe4a9-5e6b-4909-9dc7-a6f44642cf40" config-ref="HTTPTestRequestConfiguration" path="/AccService"/>

现在测试流程是这样的:

<munit:test name="AccServiceIntegrationTest-AccServiceFlowTest" doc:id="5e2d057f-38b9-494f-a889-25579960a96f" description="Test">
    <munit:execution >
        <file:read doc:name="Read acc-service-request.xml" doc:id="66ad1782-cefc-42dd-8a9d-52f6b6e191f4" config-ref="XMLFileTest" path="resources/acc-service-request.xml"/>
        <http:request method="GET" doc:name="Request" doc:id="912fe4a9-5e6b-4909-9dc7-a6f44642cf40" config-ref="HTTPTestRequestConfiguration" path="/AccService"/>
        <flow-ref doc:name="Flow-ref to FleetServiceFlow" doc:id="b8536d75-c09f-4c1a-894e-f7d25392d6b7" name="AccServiceFlow"/>
    </munit:execution>
</munit:test>

我得到的只是一个 Service unavailable (503) 响应。

在这里做错了什么?当我测试侦听器的配置时 - 一切似乎都很好...

解决方法

确保pom中的MUnit依赖具有测试范围(即<scope>test</scope>)。已知不这样做会导致此问题。

示例:

<dependency>
    <groupId>com.mulesoft.munit</groupId>
    <artifactId>munit-runner</artifactId>
    <version>${munit.version}</version>
    <classifier>mule-plugin</classifier>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>com.mulesoft.munit</groupId>
    <artifactId>munit-tools</artifactId>
    <version>${munit.version}</version>
    <classifier>mule-plugin</classifier>
    <scope>test</scope>
</dependency>

来源:https://help.mulesoft.com/s/article/HTTP-Listener-replying-Server-not-available-to-handle-this-request-either-not-initialized-yet-or-it-has-been-disposed-in-Mule-4

,

在您的 munit 测试中,请在“预期流源”下包含侦听器流。

        <munit:enable-flow-sources >
            <munit:enable-flow-source value="get:\folder:test-api-config" />
        </munit:enable-flow-sources>
        <munit:behavior> ```