2.52. Mock
使用模拟测试路由和调解规则。
2.52.1. 内部
-
模拟组件 , URI 语法:Mock
:name
有关用法和配置详情,请参阅上面的链接。
2.52.2. Maven 协调
在 code.quarkus.redhat.com 上使用此扩展创建一个新项目
或者在现有项目中添加协调:
<dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-mock</artifactId> </dependency>
2.52.3. 使用
要在测试中使用 camel-mock 功能,才能访问 MockEndpoint 实例。
CDI 注入可用于访问实例(请参阅 Quarkus 文档)。您可以使用 @Inject
注释将 camelContext 注入到测试中。然后,Camel 上下文可用于获取模拟端点。请参见以下示例:
import javax.inject.Inject; import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; import io.quarkus.test.junit.QuarkusTest; @QuarkusTest public class MockJvmTest { @Inject CamelContext camelContext; @Inject ProducerTemplate producerTemplate; @Test public void test() throws InterruptedException { producerTemplate.sendBody("direct:start", "Hello World"); MockEndpoint mockEndpoint = camelContext.getEndpoint("mock:result", MockEndpoint.class); mockEndpoint.expectedBodiesReceived("Hello World"); mockEndpoint.assertIsSatisfied(); } }
用于示例测试的路由:
import javax.enterprise.context.ApplicationScoped; import org.apache.camel.builder.RouteBuilder; @ApplicationScoped public class MockRoute extends RouteBuilder { @Override public void configure() throws Exception { from("direct:start").to("mock:result"); } }
2.52.4. Camel Quarkus 限制
CDI Bean 注入(在使用量中)不能以原生模式工作。
在原生模式中,test 和 test 下的应用程序以两个不同的进程运行,且无法在它们间共享模拟器(请参阅 Quarkus 文档)。