Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-10413

MockEndpointsAndSkip not working for consecutive tests

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • 2.18.0
    • None
    • camel-spring-boot
    • None
    • Unknown

    Description

      I have the following unit test which demonstrate the problem

      @RunWith(CamelSpringBootRunner.class)
      @SpringBootTest
      @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);
      	}
      }
      

      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
      java.lang.AssertionError: mock://end Received message count. Expected: <0> but was: <1>

      Which must mean that the skipping isn’t working. Here’s the tracer output to confirm

      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
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              mtran Minh Tran
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: