【发布时间】:2014-05-02 04:27:03
【问题描述】:
我有一个带有两个 VM 端点的流,它们都配置了请求/响应的交换模式。我想在消息到达第二个 VM 端点时评估流结束时的消息,然后下一个流与消息一起起飞。我想我可以通过在 VM 端点之前插入一个拦截器来做到这一点。这可能在 Mule FunctionalTestCase 中实现吗?是否可以以编程方式将拦截器添加到流中......?
【问题讨论】:
标签: mule
我有一个带有两个 VM 端点的流,它们都配置了请求/响应的交换模式。我想在消息到达第二个 VM 端点时评估流结束时的消息,然后下一个流与消息一起起飞。我想我可以通过在 VM 端点之前插入一个拦截器来做到这一点。这可能在 Mule FunctionalTestCase 中实现吗?是否可以以编程方式将拦截器添加到流中......?
【问题讨论】:
标签: mule
就我个人而言,我认为在测试期间不应该真正改变流程。在这种情况下,当您将其部署到服务器时,您将运行另一个(尽管略有不同)版本。
相反,我认为您将流程划分为可测试的部分,并将端点地址放入单独的配置中。这样您就可以测试彼此分离的每个基于 vm 的流程,并使用模拟流程或类似流程验证行为。
vm://in-flow1 -> process -> vm://mock
vm://mock -> verify payload -> vm://in-flow2
在“真实”配置中,您将“模拟”更改为指向第二个虚拟机流的内容。
您还可以详细说明完全相互模拟第一个或第二个 VM 流以创建不同的单元测试。
但是,如果您真的想进入“修改代码以进行测试”的兔子洞,您可能会使用一些面向方面的黑魔法来实现这一目标。
看看this blogpost是如何在mule中完成的。
【讨论】:
您可以尝试使用 Munit,并围绕流程运行间谍(它应该可以工作)。所以你可以在流程执行后运行断言
【讨论】: