【问题标题】:Mule 4: HTTP:SERVICE_UNAVAILABLE when trying to send a request to a HTTP listener in a MUnit testMule 4:在 MUnit 测试中尝试向 HTTP 侦听器发送请求时的 HTTP:SERVICE_UNAVAILABLE
【发布时间】:2021-06-03 02:51:58
【问题描述】:

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

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

org.mule.munit.runner.model.TestExecutionException:运行测试“AccServiceIntegrationTest-AccServiceFlowTest”时出现错误 [HTTP:SERVICE_UNAVAILABLE]:资源“http://localhost:8303/AccService”上的 HTTP GET 失败:服务不可用( 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) 回复。

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

【问题讨论】:

  • 应用程序是否使用 API 自动发现?
  • 另外,请从应用程序的 pom.xml 添加一个 MUnit 依赖项的 sn-p。
  • 您似乎正在 Munit 内部执行 HTTP 请求,因此您需要启用侦听器所在的流。默认情况下,Munit 不会启用配置了侦听器的流,因此您将遇到服务不可用错误。

标签: mule mule-studio mulesoft mule4 munit


【解决方案1】:

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

例子:

<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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-23
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 2013-05-15
      • 2014-12-06
      • 1970-01-01
      • 2017-11-23
      相关资源
      最近更新 更多