I think this is pretty much the same issue as I asked for in http://mail-archives.apache.org/mod_mbox/camel-dev/201607.mbox/%3ccago7ob0quxjfrkj+tjmkaxcqe94_dkp4-ud7m4osq-gk6d1...@mail.gmail.com%3E - but it did not get any response.
2016-08-17 17:17 GMT+02:00 Jean-Yves BESSON (JIRA) <j...@apache.org>: > > [ https://issues.apache.org/jira/browse/CAMEL-10241?page= > com.atlassian.jira.plugin.system.issuetabpanels:comment- > tabpanel&focusedCommentId=15424695#comment-15424695 ] > > Jean-Yves BESSON commented on CAMEL-10241: > ------------------------------------------ > > I think it is not possible inside a Spring Initializer because camel > context is not created at that step of execution. > A good way to fix the problem would be to call > CamelAnnotationsHandler.handleMockEndpoints(...) > in CamelSpringBootExecutionListener.beforeTestMethod(...). For the moment > it is only done for prepareInstance() method :-( > > > MockEndpointAndSkip and DirtiesContext not working > > -------------------------------------------------- > > > > Key: CAMEL-10241 > > URL: https://issues.apache.org/jira/browse/CAMEL-10241 > > Project: Camel > > Issue Type: Bug > > Components: camel-test > > Affects Versions: 2.17.3 > > Environment: java8 > > spring boot 1.3.6 > > Reporter: Minh Tran > > Priority: Minor > > > > MockEndpointAndSkip does not seem to get re-applied after each test when > used in conjunction with DirtiesContext. Here is a unit test exhibiting the > problem > > {noformat} > > @RunWith(CamelSpringBootJUnit4ClassRunner.class) > > @SpringApplicationConfiguration > > @MockEndpointsAndSkip("direct:b") > > @DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) > > public class MockTest { > > @Produce(uri = "direct:a") > > private ProducerTemplate producer; > > @EndpointInject(uri = "mock:end") > > private MockEndpoint end; > > @EndpointInject(uri = "mock:direct:b") > > private MockEndpoint directB; > > @Autowired > > private CamelContext context; > > @Configuration > > @EnableAutoConfiguration > > public static class Config extends SpringRouteBuilder { > > @Override > > public void configure() throws Exception { > > from("direct:a").to("direct:b"); > > from("direct:b").to("mock:end"); > > } > > } > > @Test > > public void testMock() throws InterruptedException { > > end.expectedMessageCount(0); > > directB.expectedBodiesReceived("hello"); > > producer.sendBody("hello"); > > MockEndpoint.assertIsSatisfied(context); > > } > > @Test > > public void testMock2() throws InterruptedException { > > end.expectedMessageCount(0); > > directB.expectedBodiesReceived("hello"); > > producer.sendBody("hello"); > > MockEndpoint.assertIsSatisfied(context); > > } > > } > > {noformat} > > testMock and testMock2 are exactly the same and if run individually, > they pass. However if you run both, the second one will always fail. > Running them both inside eclipse and from maven command line exhibit the > same behaviour. > > The error I get is > > {noformat} > > java.lang.AssertionError: mock://end Received message count. Expected: > <0> but was: <1> > > {noformat} > > Which must mean that the skipping isn’t working. Here’s the tracer > output to confirm > > {noformat} > > org.apache.camel.processor.interceptor.Tracer - > > ID-minhmac-local-51406-1470352938165-1-2 > >>> (route3) from(direct://a) --> direct://b <<< Pattern:InOnly, > Headers:{breadcrumbId=ID-minhmac-local-51406-1470352938165-1-1}, > BodyType:String, Body:hello > > org.apache.camel.processor.interceptor.Tracer - > > ID-minhmac-local-51406-1470352938165-1-2 > >>> (route4) direct://b --> mock://end <<< Pattern:InOnly, > Headers:{breadcrumbId=ID-minhmac-local-51406-1470352938165-1-1}, > BodyType:String, Body:hello > > {noformat} > > If you remove the DirtiesContext, then both tests passes. My suspicion > is that there is a bug when re-applying the MockEndpointAndSkip when the > spring context is being rebuilt between tests. > > > > -- > This message was sent by Atlassian JIRA > (v6.3.4#6332) > -- -- David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen