Hello all, I am trying to unit test the following method, which is essentially the Sending to multiple JMS destinations from one endpoint example from the camel website. Since the Exchange object is a param and contains the result, I'm having trouble Mocking it. The below test fails at the *** line. actualTopicName is null :( . Essentially all the publish method is doing, is adding headers to the In Msg of the Exchange object.
Appreciate the advice. Geoff @Test public void testSingleTopicPublish(){ MarketData md = createMarketData(); Exchange exchange = mock(Exchange.class); Message inMsg = mock(Message.class); when(exchange.getIn()).thenReturn(inMsg); when(inMsg.getBody(Publishable.class)).thenReturn(md); String singleTopic = "TEST.TOPIC"; destinationResolver = new JMSDestinationResolver(singleTopic,PublishType.SINGLE_DESTINATION); destinationResolver.publish(exchange); Message actualInMsg = exchange.getIn(); String actualTopicName = (String) actualInMsg.getHeader(JmsConstants.JMS_DESTINATION_NAME); assertEquals(singleTopic, actualTopicName); ************************************ } /** * Send exchange to a JMS Destination determined at Runtime * @param exchange */ public void publish(Exchange exchange){ Publishable publishable= exchange.getIn().getBody(Publishable.class); Map<String,String> origMsgHeaders = publishable.getPublishProperties(); Map<String,Object> msgHeaders = new HashMap<String, Object>(origMsgHeaders); String destinationName = null; //If we are publishing on muiltiple topics and there is no destinationPrefix can't publish this msg if(publishType == PublishType.MULTIPLE_DESTINATIONS){ if(!StringUtils.isEmpty(publishable.getPublishTopicName())){ destinationName = String.format("%s.%s", destinationPrefix, publishable.getPublishTopicName()); }else{ log.error("Empty topicName for msg: " + publishable); } } else{ //The we are publishing on 1 topic, grab it from config destinationName = destinationPrefix; } if(log.isDebugEnabled()){ log.debug("Destination is " + destinationName); } msgHeaders.put(JmsConstants.JMS_DESTINATION_NAME, destinationName); exchange.getIn().setHeaders(msgHeaders); } =============================================================================== Please access the attached hyperlink for an important electronic communications disclaimer: http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html ===============================================================================