2.82. Mock
使用模拟测试路由和调解规则。
2.82.1. 什么是内部 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
-
Mock 组件,URI 语法:
mock:name
有关用法和配置详情,请参阅上述链接。
2.82.2. Maven 协调 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在 code.quarkus.redhat.com 上使用此扩展创建新项目
或者将协调添加到现有项目中:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-mock</artifactId>
</dependency>
2.82.3. 使用方法 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要在测试中使用 camel-mock 功能,需要访问 MockEndpoint 实例。
CDI 注入可用于访问实例(请参阅 Quarkus 文档)。您可以使用 @Inject 注释将 camelContext 注入测试。然后,可以使用 Camel 上下文获取模拟端点。请参见以下示例:
import jakarta.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 jakarta.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.82.4. Camel Quarkus 限制 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
CDI Bean 注入(在 Usage 中描述)无法在原生模式下工作。
在原生模式中,测试和测试下的应用程序在两个不同的进程中运行,且不能在它们之间共享模拟 Bean (请参阅 Quarkus 文档)。