如何模拟MuleEventContext类

时间:2013-10-09 17:46:59

标签: unit-testing mule

我想测试我自己的实现Group的自定义类org.mule.api.lifecycle.CallableGroup实现了onCall(MuleEventContext)方法。现在要测试Group,我需要mock MuleEventContext课程。

我很想知道人们是如何做到这一点的,以及他们是否可以提出一些最佳做法/技巧和提示,

3 个答案:

答案 0 :(得分:1)

您真的需要实施org.mule.api.lifecycle.Callable吗?如果您的组件是POJO,则不必混淆MuleEventContext

如果您真的需要它,请使用http://www.mulesoft.org/docs/site/3.4.0/testapidocs/index.html?org/mule/tck/junit4/AbstractMuleContextTestCase.html

中的getTestEventContext助手

或者,如果您需要额外的基础设施,例如MuleClient,那么实际上通过扩展http://www.mulesoft.org/docs/site/3.4.0/apidocs/index.html?org/mule/tck/junit4/FunctionalTestCase.html来创建功能测试用例

答案 1 :(得分:1)

使用AbstractMuleContextTestCase。这应该可以解决问题。

使测试用例扩展AbstractMuleContextTestCase。

然后在测试方法中获取MuleEventContet的对象使用getTestEventContext方法  MuleTestUtils助手calss由mule提供。

MyComponentTest extends  AbstractMuleContextTestCase {

然后在测试方法中:

    MuleEventContext eventContext = MuleTestUtils.getTestEventContext("",      MessageExchangePattern.REQUEST_RESPONSE, muleContext);            
        .........
        ......... 
    MuleMessage result = (MuleMessage)componentInstance.onCall(eventContext);

希望这有帮助。

答案 2 :(得分:0)

这是我最喜欢的创建MuleEventContext以测试Callable组件的方法:

class TestClass extends org.mule.munit.runner.functional.FunctionalMunitSuite {
...
    MuleEvent event = testEvent("PAYLOAD HERE");
    MuleEventContext eventContext = new org.mule.DefaultMuleEventContext(event);
...
}