我们在其中一个骡子流程中有一个例外策略,如下所示
<flow name="myFlow">
.........
.........
outboubd-call
.........
<catch-exception-strategy>
<exception-strategy ref="myOwnExceptionStrategy" />
</catch-exception-strategy>
</flow>
虽然我们通过使用munit模拟出境来抛出异常,但它进入了捕获异常策略 我也在嘲笑如下
whenMessageProcessor("exception-strategy").thenReturn(muleMessageWithPayload("OK"));
但它不是返回指定的mule消息,而是实际进入引用的异常策略(我可以通过日志清楚地看到)。
我也试过以下
Map<String,Object> map = new HashMap<String,Object>();
map.put("ref","myOwnExceptionStrategy");
whenMessageProcessor("exception-strategy").withAttributes(map).thenReturn(muleMessageWithPayload("OK"));
不幸的是,上述方法也没有成效。
建议我一个解决方案。
答案 0 :(得分:1)
一个可能有用的常见模式是将流逻辑放在子流中的异常策略中,如下所示:
<catch-exception-strategy name="myOwnExceptionStrategy">
<flow-ref name="handleMyOwnExceptionMessage" />
</catch-exception-strategy>
然后,您可以模拟异常策略引用的流程。
答案 1 :(得分:0)
你不能在munit中模拟异常策略,因为它们不是消息处理器。
此外,如果您期待异常,那么您是否只是断言正确的异常被抛出?或者返回正确的错误响应等?
答案 2 :(得分:0)
为了扩展上面的答案,异常策略不是消息处理器。如果您观察2015年1月发布的新mule工作室,他们会明确区分流程,包括源,流程和错误处理。
截至目前,munit并不支持,未来可能是。