【问题标题】:Is it possible to programatically add an interceptor before a VM endpoint from within a Mule FunctionalTestCase? If so, how?是否可以从 Mule FunctionalTestCase 中以编程方式在 VM 端点之前添加拦截器?如果是这样,怎么做?
【发布时间】:2014-05-02 04:27:03
【问题描述】:

我有一个带有两个 VM 端点的流,它们都配置了请求/响应的交换模式。我想在消息到达第二个 VM 端点时评估流结束时的消息,然后下一个流与消息一起起飞。我想我可以通过在 VM 端点之前插入一个拦截器来做到这一点。这可能在 Mule FunctionalTestCase 中实现吗?是否可以以编程方式将拦截器添加到流中......?

【问题讨论】:

    标签: mule


    【解决方案1】:

    就我个人而言,我认为在测试期间不应该真正改变流程。在这种情况下,当您将其部署到服务器时,您将运行另一个(尽管略有不同)版本。

    相反,我认为您将流程划分为可测试的部分,并将端点地址放入单独的配置中。这样您就可以测试彼此分离的每个基于 vm 的流程,并使用模拟流程或类似流程验证行为。

    vm://in-flow1 -> process -> vm://mock
    vm://mock -> verify payload -> vm://in-flow2
    

    在“真实”配置中,您将“模拟”更改为指向第二个虚拟机流的内容。

    您还可以详细说明完全相互模拟第一个或第二个 VM 流以创建不同的单元测试。

    但是,如果您真的想进入“修改代码以进行测试”的兔子洞,您可能会使用一些面向方面的黑魔法来实现这一目标。

    看看this blogpost是如何在mule中完成的。

    【讨论】:

      【解决方案2】:

      您可以尝试使用 Munit,并围绕流程运行间谍(它应该可以工作)。所以你可以在流程执行后运行断言

      https://github.com/mulesoft/munit

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-02
        • 1970-01-01
        • 2019-11-04
        • 2012-06-19
        • 2021-09-06
        • 2017-12-02
        • 1970-01-01
        相关资源
        最近更新 更多