为MUnit Mule测试设置HTTP Url参数

为MUnit Mule测试设置HTTP Url参数,mule,munit,Mule,Munit,我想测试一个流程。流有一个HTTP入站连接器,流本身充当RESTful服务 流需要设置一些URL参数,并使用标准符号访问这些参数:#[message.inboundProperties.'http.query.params.test] 我想用MUnit测试这个流。当我针对流创建一个默认MUnit测试时,MUnit会创建一个流引用来调用我的原始流。但是,运行此测试会立即失败,因为该流需要HTTP调用,并且需要URL参数集 这就是我现在的处境。我希望在调用flow ref之前设置这些变量,以便我的流

我想测试一个流程。流有一个HTTP入站连接器,流本身充当RESTful服务

流需要设置一些URL参数,并使用标准符号访问这些参数:
#[message.inboundProperties.'http.query.params.test]

我想用MUnit测试这个流。当我针对流创建一个默认MUnit测试时,MUnit会创建一个流引用来调用我的原始流。但是,运行此测试会立即失败,因为该流需要HTTP调用,并且需要URL参数集

这就是我现在的处境。我希望在调用flow ref之前设置这些变量,以便我的流可以正常处理

我试过几件事:

  • 使用
    munit:set
    组件,可以设置各种属性
  • 手动实例化
    MessagePropertyMapContext
    并将其分配给
    http.query.params
    变量
  • flow ref
    组件替换为
    HTTP
    组件,并使用实际的HTTP消息调用流
这些似乎都不能正常工作

变量设置似乎总是失败,并在尝试访问变量时导致
NullPointerException

使用
HTTP
组件调用流不起作用,因为Mule随机分配一个端口进行测试,而我似乎无法在运行时访问该端口。因此,我无法调用端点

我在别处寻找过类似的问题,但它们似乎对我没有帮助

所以我的基本问题是:当从MUnit测试中进行测试时,如何设置流可以访问的URL参数。有没有更好的方法来实现我在这里想要实现的目标


谢谢大家!

如果你仔细看的话,Mule文档就会找到答案;) 答案是正确的

您只需在munit测试流的开始处添加
munit:set
组件(在Mule调色板中搜索此组件的“set Message”):


@TroyS您可以尝试以下代码。这对我有用

<munit:set payload="#['']" doc:name="Set Message url_key:payload_1">
        <munit:inbound-properties>
            <munit:inbound-property key="http.query.params" value="#[['url_key':'payload_1']]"/>
        </munit:inbound-properties>
    </munit:set>

要添加到上述答案中,这对应于Mule 3 Pallete中的“设置消息”组件

#[['key1':'val1', 'key2': 'val2', 'key3': 'val3']]
<munit:set payload="#['']" doc:name="Set Message url_key:payload_1">
        <munit:inbound-properties>
            <munit:inbound-property key="http.query.params" value="#[['url_key':'payload_1']]"/>
        </munit:inbound-properties>
    </munit:set>