You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by David Karlsen <da...@gmail.com> on 2016/08/17 17:59:49 UTC

Re: [jira] [Commented] (CAMEL-10241) MockEndpointAndSkip and DirtiesContext not working

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-gk6d1Xqw@mail.gmail.com%3E
- but it did not get any response.

2016-08-17 17:17 GMT+02:00 Jean-Yves BESSON (JIRA) <ji...@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