[ 
https://issues.apache.org/jira/browse/CAMEL-10241?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-10241:
--------------------------------
    Fix Version/s:     (was: 2.20.0)
                   2.21.0

> 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
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 2.21.0
>
>
> 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.4.14#64029)

Reply via email to