2.55. Mock


使用模拟测试路由和介质规则。

2.55.1. 内部是什么

有关使用和配置详情,请参阅上述链接。

2.55.2. Maven 协调

在 code.quarkus.redhat.com 上使用此扩展创建一个新项目

或者将协调添加到现有项目中:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-mock</artifactId>
</dependency>

2.55.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.55.4. Camel Quarkus 限制

CDI Bean 的注入(在 Usage 中相同)无法在原生模式下工作。

在原生模式下,测试下的测试和应用程序在两个不同的进程中运行,且无法在它们间共享模拟 Bean (请参阅 Quarkus 文档)。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.