Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mule 用于测试的VM或FunctionalTestComponent?最佳做法_Mule - Fatal编程技术网

Mule 用于测试的VM或FunctionalTestComponent?最佳做法

Mule 用于测试的VM或FunctionalTestComponent?最佳做法,mule,Mule,我正在测试我的Mule流,并希望将其模块化,以便测试单个部件。以以下为例: <flow name="in" doc:name="in"> <sftp:inbound-endpoint connector-ref="sftp" address="sftp://test:test@localhost:${sftp.port}/~/folder" autoDelete="false" doc:name="SFTP"&g

我正在测试我的Mule流,并希望将其模块化,以便测试单个部件。以以下为例:

<flow name="in" doc:name="in">
        <sftp:inbound-endpoint 
            connector-ref="sftp"
            address="sftp://test:test@localhost:${sftp.port}/~/folder" autoDelete="false" doc:name="SFTP">
        </sftp:inbound-endpoint>

        <vm:outbound-endpoint path="out" />
    </flow>
这是一种好的做法还是使用FunctionalTestComponent检查接收到的事件更好

通过使用vm而不是FunctionalTestComponent,我不需要为了测试目的而更改流,这是一个优点

然而,这样做,我不确定后果如何。我听说flow ref是模块化流的首选方法,但这不允许我在测试中获取消息等。
任何建议或最佳实践都值得赞赏。

围绕请求-响应VM端点进行模块化有几个缺点,包括丢失入站属性和引入额外的跃点,以及潜在的性能成本,这是flow ref所没有的。单向VM端点提供的功能与flow ref不同,因此无法真正进行比较

使用流引用调用的私有流或子流的问题在于很难从代码中调用它们。这是可能的,但很难


我发现的一个解决方法是在测试配置文件中创建带有VM入站端点的测试流,并使用它们通过流引用将测试消息注入私有/子流。优点是主配置文件不受影响。

我认为我最近的博客文章可以很好地解答您的疑问。我写下了我认为在骡子流程设计方面的最佳实践。我非常关注测试方面(使用MUnit框架)。使用它,您可以轻松模拟任何消息处理器(包括流和子流):

 MuleMessage message = muleClient.request("vm://out", 10000L);