[
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)