测试Mule中的子流程

use*_*178 6 java unit-testing flow functional-testing mule

我已经开始将测试用例写入我的Mule项目了.

我已经为我的Main Flows编写了功能测试用例,如下所示.

public void testMainFlow_1() throws Exception{
     MuleClient client = muleContext.getClient();
            MuleMessage result = client.send(helloServiceAddress, fileAsString("SamplePayloads/input_Request.xml"), properties);
    assertNotNull("Null Result", result);           
    assertEquals(result.getPayloadAsString(), fileAsString("SampleResponses/sampleResponse.xml"));   

}
Run Code Online (Sandbox Code Playgroud)

但是我如何测试我的子流程.他们没有任何终点.那么如何将有效载荷传递给它们并进行测试呢.

以下是我的流量配置.

<flow name="main_flow" >
    ....
    ....
    <flow-ref  name="subflow_1" />
    ....
    ....
    <flow-ref  name="subflow_2" />
    ....
    ....
</flow>

<sub-flow name="subflow_1">
    ....
    <some-transformer ... />
    <out-bound call to web-service />
    <some-transformer ... />
    ....
</sub-flow>

<sub-flow name="subflow_2">
    ....
    <some-transformer ... />
    <out-bound call to web-service />
    <some-transformer ... />
    ....
</sub-flow>
Run Code Online (Sandbox Code Playgroud)

Dav*_*sot 5

使用FunctionalTestCase它应该很简单:

MessageProcessor subFlow = muleContext.getRegistry().lookupObject("subflow_1");
MuleEvent result = subFlow.process(getTestEvent("test_data"));
Run Code Online (Sandbox Code Playgroud)

它不起作用.

目前,最好的方法IMO包括一个测试配置,其中包含要测试的子流的流包装器,并在主配置中加载此测试配置FunctionalTestCase.

@ genjosanzo的方法也有效,但它基于将子流与来自测试代码本身的预先存在的主流相关联.我个人认为创建测试流程会更严格.