Java 骆驼终点没有被嘲笑

Java 骆驼终点没有被嘲笑,java,spring-boot,apache-camel,spring-camel,Java,Spring Boot,Apache Camel,Spring Camel,我有一个简单的驼峰路线,希望对其进行测试,但实际的端点不是MockEndpoint,而是调用: import org.apache.camel.builder.RouteBuilder; import org.springframework.stereotype.Component; import lombok.extern.slf4j.Slf4j; @Component @Slf4j public class ProcessingRoute extends RouteBuilder

我有一个简单的驼峰路线,希望对其进行测试,但实际的端点不是MockEndpoint,而是调用:

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

import lombok.extern.slf4j.Slf4j;
    
@Component
@Slf4j
public class ProcessingRoute extends RouteBuilder {

    @Override
    public void configure() {

        from("direct:processKafkaMessage")
                .to("file:output");

        }
}
我的测试:

import org.apache.camel.CamelContext;
import org.apache.camel.EndpointInject;
import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.spring.junit5.CamelSpringBootTest;
import org.apache.camel.test.spring.junit5.MockEndpoints;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;

@ActiveProfiles("test")
@CamelSpringBootTest
@SpringBootTest()
@ContextConfiguration
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
@MockEndpoints("file:output")
class ProcessingRouteIT {

    @Autowired
    private CamelContext camelContext;

    @Produce("direct:processKafkaMessage")
    private ProducerTemplate mockKafkaProducer;

    @EndpointInject("mock:file:output")
    private MockEndpoint mockCamel;

    @Test
    void processMessage_successful() throws Exception {
        mockCamel.expectedBodiesReceived("foo");
        mockKafkaProducer.sendBodyAndHeaders("foo", Collections.emptyMap());
        mockCamel.assertIsSatisfied();
    }

}
如果我在一个简单的示例项目中使用这段代码,而里面没有其他内容,那就很好了。但是当我把它放在我的应用程序中,里面有更多的路由和其他东西时,它不会模拟端点,而是写入文件

13:58:09.579  INFO [main] o.a.c.t.s.j.CamelAnnotationsHandler      - Enabling auto mocking of endpoints matching pattern [file:output] on CamelContext with name [camelContext].
13:58:57.010  INFO [main] .i.e.InterceptSendToMockEndpointStrategy - Adviced endpoint [file://output] with mock endpoint [mock:file:output]

14:14:21.969  INFO [main] c.t.s.j.CamelSpringBootExecutionListener - CamelSpringBootExecutionListener before: class ProcessingRouteIT.processMessage_successful
14:14:21.971  INFO [main] c.t.s.j.CamelSpringBootExecutionListener - Initialized CamelSpringBootExecutionListener now ready to start CamelContext
14:14:26.953  INFO [main] o.a.camel.component.mock.MockEndpoint    - Asserting: mock://file:output is satisfied
我在这两个应用程序中使用了相同版本的camel(3.3.0)和springboot(2.3.1.RELEASE)。 有什么想法吗?我不明白

java.lang.AssertionError: mock://file:output Received message count. Expected: <1> but was: <0>
Expected :<1>
Actual   :<0>
java.lang.AssertionError:mock://file:output 收到的邮件数。预期:但是:
预期:
实际:

您提供了一个示例,您自己说它是独立工作的,只有当您将其放入应用程序中时才会停止工作。这表明了一个事实,即您提供的代码中不存在该错误,而该错误仅由应用程序中的某些其他内容触发。这使得我们几乎无法猜测问题出在哪里,因为我们基本上必须猜测您可能是如何设置您的应用程序的。一种前进的方法是逐渐从应用程序中删除内容,直到它重新开始工作。然后,您可以更好地确定应用程序的哪个部分干扰了测试中的模拟。我盲目地删除了一些依赖项,结果成功了。现在我试着找出详细的解决方法。好的,找到了导致测试失败的依赖项:org.springframework.cloud-spring-cloud-contract-wiremock 2.2.3.RELEASE-test您提供了一个示例,您自己说它是独立工作的,只有当您将其放入应用程序中时,它才会停止工作。这表明了一个事实,即您提供的代码中不存在该错误,而该错误仅由应用程序中的某些其他内容触发。这使得我们几乎无法猜测问题出在哪里,因为我们基本上必须猜测您可能是如何设置您的应用程序的。一种前进的方法是逐渐从应用程序中删除内容,直到它重新开始工作。然后,您可以更好地确定应用程序的哪个部分干扰了测试中的模拟。我盲目地删除了一些依赖项,结果成功了。现在我试着找出详细的解决方法。好的,找到了导致测试失败的依赖项:org.springframework.cloud-spring-cloud-contract-wiremock 2.2.3.RELEASE-test