title: Writing unit tests for camel routes in a SpringBoot application - getting messageCount 0
body: <p>I am trying to write unit tests for a camel route - its for importing and processing a file</p>
  
  <pre><code>from(fullImportFTP)
          .routeId(STUB_FILE_DOWNLOAD_ROUTE_ID)
          .onException(Exception.class)
          .handled(false)
          .log(LoggingLevel.ERROR, STUB_IMPORT_ERROR_CODE)
          .end()
          .log("Processing  Stub file:[${header.CamelFileName}]")
          .to(ROUTE_TO_MACE);
  
  from(ROUTE_TO_MACE)
          .routeId(STUB_FILE_IMPORT_ROUTE_ID)
          .onException(Exception.class)
          .handled(false)
          .log(LoggingLevel.ERROR, STUB_IMPORT_ERROR_CODE)
          .end()
          .onException(IOException.class)
          .maximumRedeliveries(routesConfig.camelMaximumRetries).redeliveryDelay(routesConfig.camelRedeliveryDelay)
          .handled(false)
          .log(LoggingLevel.ERROR, STUB_IMPORT_ERROR_CODE)
          .end()
          .split().tokenizeXML(ITEM).streaming()
          .process(processor)
          .to("log:route.StubRoute?level=DEBUG")
          .end()
          .log("Stub file sucessfully processed:[${header.CamelFileName}]");
  </code></pre>
  
  <p>And below is the unit test:</p>
  
  <pre><code>@RunWith(CamelSpringBootRunner.class)
  @SpringBootTest
  @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
  public class CamelRouteTest {
      @EndpointInject(uri = "mock:success_result")
      private MockEndpoint successResultEndpoint;
  
      @EndpointInject(uri = "direct:mock-import-stub-download")
      private FluentProducerTemplate producer;
  
      @Autowired
      private CamelContext camelContext;
  
      @MockBean
      RestTemplate restTemplate;
  
  
      private static final String MOCK_IMPORT_STUB_DOWNLOAD = "direct:mock-import-stub-download";
      private static final String TEST_STUB_FILE_LOCATION = "src/test/resources";
  
      @Before
      public void setup() throws Exception {
          camelContext.getRouteDefinition(STUB_FILE_DOWNLOAD_ROUTE_ID).autoStartup(true).adviceWith(camelContext,
                  new AdviceWithRouteBuilder() {
                      @Override
                      public void configure() throws Exception {
                          replaceFromWith(MOCK_IMPORT_STUB_DOWNLOAD);
                          interceptSendToEndpoint("log:route.StubRoute?level=DEBUG").skipSendToOriginalEndpoint().to(successResultEndpoint);
                      }
                  });
  
          camelContext.start();
      }
  
      @Test
      public void testFileDownloadRouter() throws Exception {
          File file = new File(TEST_STUB_FILE_LOCATION + "/Stub_11092018_162149_59642501.xml");
          successResultEndpoint.expectedMessageCount(1);
          producer.withBody(file).withHeader(Exchange.FILE_NAME, "Stub_24102018_162149_59642501.xml").send();
          successResultEndpoint.assertIsSatisfied();                                                                                                                                                                                                
      }
  </code></pre>
  
  <p>I always get the message count as 0. Here is the ERROR</p>
  
  <blockquote>
    <p>java.lang.AssertionError: mock://success_result Received message
    count. Expected: &lt;1> but was: &lt;0> Expected :&lt;1>  Actual   :&lt;0></p>
  </blockquote>
  
  <p>What am I doing wrong here? I have 2 routes as you can see - the first one actually goes to the second one, so in the unit tests should I have 2 routes too? I haven't added 2 routes because if I debug I can see that it actually goes through the processor and returning the correct result.</p>