我已经编写了单元测试用例来在我的mule流程中单独测试消息处理器。单元测试不适用于XSLT转换器
但单元测试失败,错误
org.mule.api.transformer.TransformerMessagingException: Property "xsl-file or xsl-text" not set.
One or more of them must be set (org.mule.api.lifecycle.InitialisationException).
Message payload is of type: String
(org.mule.api.transformer.TransformerMessagingException). Message payload is of type: String
其中一个的变压器是一个XSLT如下所示。
<mule-xml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="C:\EWS\myproj\src\main\resources\xslt\DataAdder.xsl"
name="AdderXSLT" >
</mule-xml:xslt-transformer>
单元测试方法如下所示。
MessageProcessor subFlow = muleContext.getRegistry().lookupObject("AdderXSLT");
MuleEvent result = subFlow.process(getTestEvent(getFileAsString("SamplePayloads/input.xml")));
System.out.println("The output from Event is " + result.getMessageAsString());
System.out.println("The converted XML is " + result.getMessage().getPayloadAsString());
assertNotNull(result);
assertNull(result.getMessage().getExceptionPayload());
assertFalse(result.getMessage().getPayload() instanceof NullPayload);
请帮我理解这里发生了什么事。
它工作。谢谢瑞恩。但仍然不明白为什么messageprocessor.process方式不起作用。 – user1760178 2013-02-27 20:47:05
我相信这是因为当你将它作为流的一部分调用时,你正在MessageProcessorChain中执行它,它会在适当的地方初始化每个消息处理器。直接引用MessageProcessor的地方不会初始化它。我已经更新了包含更多信息的答案。 – 2013-02-27 21:15:50