0

我正在尝试设置 MUnit 测试以确认 set payload 方法正在将有效负载设置为正确的值。我通过 HTTP 端点发送 JSON 文件。

正常运行流程时,将有效负载设置为:
#[message.inboundproperties.'http.query.params'.json]
工作正常,但是当我运行测试时,断言等于失败。

我正在使用 http.query.params=ParameterMap{[json=[[ { "protocol":"http", "host":"0.0.0.0", "port":"8085", "path" 设置消息: “”,“操作”:“GET”},{“协议”:“https”,“主机”:“0.0.0.0”,“端口”:“8086”,“路径”:“”,“操作”: “邮政” } ]]]}

我的主要流程是:

<flow name="httpInboundFlow">
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
    <set-payload value="#[message.inboundProperties.'http.query.params'.json]" doc:name="Set Payload To Query Params"/>
</flow>

我的测试 xml 是:

<munit:test name="tddmunitdemo-test-suiteTest" description="MUnit Test">
    <munit:set payload="#[]" doc:name="Set Message">
        <munit:inbound-properties>
            <munit:inbound-property key="http.query.params" value="ParameterMap{[json=[[ { &quot;protocol&quot;:&quot;http&quot;, &quot;host&quot;:&quot;0.0.0.0&quot;, &quot;port&quot;:&quot;8085&quot;, &quot;path&quot;:&quot;&quot;, &quot;operation&quot;:&quot;GET&quot; }, { &quot;protocol&quot;:&quot;https&quot;, &quot;host&quot;:&quot;0.0.0.0&quot;, &quot;port&quot;:&quot;8086&quot;, &quot;path&quot;:&quot;&quot;, &quot;operation&quot;:&quot;post&quot; } ]]]}"/>
        </munit:inbound-properties>
    </munit:set>
    <flow-ref name="httpInboundFlow" doc:name="httpInboundFlow"/>
    <munit:assert-on-equals expectedValue="[ { &quot;protocol&quot;:&quot;http&quot;, &quot;host&quot;:&quot;0.0.0.0&quot;, &quot;port&quot;:&quot;8085&quot;, &quot;path&quot;:&quot;&quot;, &quot;operation&quot;:&quot;GET&quot; }, { &quot;protocol&quot;:&quot;https&quot;, &quot;host&quot;:&quot;0.0.0.0&quot;, &quot;port&quot;:&quot;8086&quot;, &quot;path&quot;:&quot;&quot;, &quot;operation&quot;:&quot;post&quot; } ]" actualValue="#[payload]" doc:name="Assert Equals"/>
</munit:test>

测试失败,并显示一条失败消息,指出实际值为空。

我可以通过模拟设置的有效负载来修复它,但是我没有检查设置的有效负载是否按预期工作。

4

1 回答 1

0

查看 RFC 1738 统一资源定位器 - https://www.ietf.org/rfc/rfc1738.txt

你应该编码花括号,也许是括号。JSON 作为 http 参数有点奇怪,除非它可能是 1 或 2 个名称/值对。我希望您需要在 URL 中使用代码,例如 localhost:8081/?json=%5B%7B%22protocol ...

尝试对 URL 进行编码并告诉我们。

于 2016-06-22T16:07:53.287 回答