Mule:JUnit测试不适用于文件端点

时间:2013-05-28 05:15:42

标签: file testing junit mule

在Mule服务器下运行以下流时,位于C:\ vikas \ file位置的Message.xml文件已成功移动到C:\ vikas \ file \ error位置。

<flow name="Demo" doc:name="Demo">

    <file:inbound-endpoint path="C:\vikas\file\"
        responseTimeout="10000" doc:name="File" />

    <file:outbound-endpoint path="C:\vikas\file\error"
        outputPattern="#[function:datestamp:dd-MM-yy]_#[function:systime].xml"
        responseTimeout="10000" doc:name="ErrorQueue" />
</flow>

但是,在JUnit测试下运行时,会在C:/ vikas / file位置创建913d4c34-c754-11e2-8cfb-696bc9376bf8.dat文件。为什么Message.xml没有复制到C:\ vikas \ file \ error位置?如何解决?

@Test
public void testFile() throws Exception {

    String fileInputPath = "file://C:/vikas/file";
    String payload = IOUtils.getResourceAsString(
            "Message.xml", this.getClass());
    client.dispatch(fileInputPath, payload, null);

    MuleMessage result = client.request(
            "file://C:/vikas/file/error", 5000);
}

1 个答案:

答案 0 :(得分:1)

我在client.dispatch()方法之后添加Thread.sleep后修复了它。

@Test
public void testFile() throws Exception {

    String fileInputPath = "file://C:/vikas/file";
    String payload = IOUtils.getResourceAsString(
            "Message.xml", this.getClass());
    client.dispatch(fileInputPath, payload, null);

    Thread.sleep(685000);

    MuleMessage result = client.request(
            "file://C:/vikas/file/error", 5000);
}

由于dispatch是异步方法,Mule需要一些等待时间来完成文件移动过程。