You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MUnit测试中验证Mule 4 JMS发布的jms:properties参数

在Mule 4中验证Mock JMS发布的自定义属性

Mule 4重构了消息模型,不再沿用Mule 3中的message.outboundProperties,要验证JMS发布时的自定义属性,需要通过MUnit的参数捕获结合断言来实现,具体步骤如下:

1. 修改Mock配置以捕获消息构建参数

在你的mock-when配置中添加参数捕获逻辑,捕获JMS消息的构建器对象,后续可从中提取自定义属性:

<munit-tools:mock-when doc:name="Mock Place file on some queue" processor=".*:.*">
    <munit-tools:with-attributes>
        <munit-tools:with-attribute attributeName="doc:name" whereValue="#[['Place file on some queue']]" />
    </munit-tools:with-attributes>
    <!-- 捕获JMS消息构建器参数 -->
    <munit-tools:capture-arguments>
        <munit-tools:argument name="messageBuilder" />
    </munit-tools:capture-arguments>
    <munit-tools:then-return>
        <munit-tools:payload value="#[payload]" mediaType="application/xml" />
    </munit-tools:then-return>
</munit-tools:mock-when>

这里的messageBuilder是JMS发布器用于构造消息的核心对象,包含所有配置的消息属性、correlationId等信息。

2. 添加属性验证逻辑

通过MUnit的断言组件或verify-call来验证捕获到的属性值是否符合预期:

方式一:使用断言组件直接验证

<!-- 验证prop1的值 -->
<munit:assert-that doc:name="Assert prop1 matches expected value"
    expression="#[munitTools.capturedArguments('Mock Place file on some queue').messageBuilder.properties.prop1]"
    is="#[MunitTools.equalTo('你的预期prop1值')]" />

<!-- 验证prop2的值 -->
<munit:assert-that doc:name="Assert prop2 matches expected value"
    expression="#[munitTools.capturedArguments('Mock Place file on some queue').messageBuilder.properties.prop2]"
    is="#[MunitTools.equalTo('你的预期prop2值')]" />

方式二:使用verify-call进行参数验证

<munit-tools:verify-call processor=".*:publish" doc:name="Verify JMS properties are correct">
    <munit-tools:with-attributes>
        <munit-tools:with-attribute attributeName="doc:name" whereValue="#[['Place file on some queue']]" />
    </munit-tools:with-attributes>
    <munit-tools:arguments>
        <!-- 验证prop1等于预期值 -->
        <munit-tools:argument expression="#[messageBuilder.properties.prop1 == '你的预期prop1值']" />
        <!-- 验证prop2等于预期值 -->
        <munit-tools:argument expression="#[messageBuilder.properties.prop2 == '你的预期prop2值']" />
    </munit-tools:arguments>
</munit-tools:verify-call>

关键说明

  • 若测试中通过vars设置属性值,可直接将断言中的预期值替换为vars.expectedProp1、vars.expectedProp2,提升测试数据的灵活性。
  • 需确保捕获的参数名称为messageBuilder,这是Mule 4 JMS发布器对应的消息构建参数名,不可随意修改。

内容的提问来源于stack exchange,提问作者Ferenc Kiss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:53:13