Hello,
Thanks a lot. I did it. (see below) Now i have another question :)
My Endpoints are connecting to the real queue, and send the message there.
What if i don't want a real connection to a queue,* can the endpoint be
somehow virtualize for unit tests*?
Ofcourse i can use active MQ instead of real MQ, but we will have same stuff
= connection itself.
I mean, to take the endoints from context, somehow vritualize not to have a
real conection(just spmething called Endpoint), and send a message to that
endpoint.
i think you got the idea: to use Endpoints in general instead of real one
(with connection)
Thanks,
Vlad
package main;
import org.apache.camel.CamelContext;
import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.apache.log4j.PropertyConfigurator;
import org.junit.BeforeClass;
import org.junit.Test;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.msg.client.wmq.WMQConstants;
/**
* @author vlad.costache
*
*
*/
public class TestWithMokk extends CamelTestSupport {
@Produce(uri = "jms:queue:msb.2761100008.mpos")
protected ProducerTemplate template;
@BeforeClass
public static void setConn(){
PropertyConfigurator.configure("./log4j.properties");
}
/* (non-Javadoc)
* @see
org.apache.camel.test.junit4.CamelTestSupport#createCamelContext()
*/
@Override
protected CamelContext createCamelContext() throws Exception {
MQQueueConnectionFactory factory = new
MQQueueConnectionFactory();
factory.setQueueManager("MQSD.ESSWS008");
factory.setChannel("MSB.S0.SVRCONN");
factory.setHostName("10.23.8.218");
factory.setPort(1414);
factory.setTransportType(WMQConstants. WMQ_CM_CLIENT);
JmsComponent jmsComponent =
JmsComponent.jmsComponentAutoAcknowledge(factory);
CamelContext camelContext = new DefaultCamelContext();
camelContext.addComponent("jms", jmsComponent );
return camelContext;
}
@Test
public void testSendMatchingMessage() throws Exception {
context.getRouteDefinitions().get(0).adviceWith(context, new
AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
// mock all endpoints
mockEndpoints();
}
});
String sendbody = "<send/>";
String expectedBody = "<matched/>";
MockEndpoint mockEndpoint =
getMockEndpoint("mock:jms:queue:msb.2761100008.invoice");
mockEndpoint.expectedBodiesReceived(expectedBody);
template.sendBodyAndHeader(expectedBody, "foo", "bar");
mockEndpoint.assertIsSatisfied();
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new MyRouteBuilder();
}
}
--
View this message in context:
http://camel.465427.n5.nabble.com/Camel-testing-tp5736444p5736480.html
Sent from the Camel - Users mailing list archive at Nabble.com.