问题标签 [camel-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
245 浏览

java - 阿帕奇骆驼 | 弹簧测试 | 拦截路线不起作用

我是 apache camel 的新手,所以我仍在努力编写骆驼测试用例。

我定义了以下路线

在测试时,我试图拦截在我的路由定义并对其设置一些模拟响应。因此,经过一番搜索,我发现使用adviceWith是实现它的正确方法。

所以我的测试如下。测试的结果是,它仍然会去 Look_up_route(直接:lookUpRoute,另一个定义的路由)处理传递的数据,但期望代码应该跳过这个并将响应设置为“MockResponse”

我想知道如何跳过 .to(LOOK_UP_ROUTE) 并将 mockResponse 设置为它。

0 投票
2 回答
1476 浏览

java - Apache Camel - DirectConsumerNotAvailableException:端点上没有可用的消费者。交换[]

有人可以帮助我解决这个错误并解释我有什么问题吗?

我正在开发一个简单的骆驼路线来处理信息,然后将其存储在文件中。

我正在使用的技术:

  • JDK 11
  • 阿帕奇骆驼 3.3.0
  • 春季启动 2.3.0

当我想测试骆驼路线时,出现以下错误。

这是我的路线

这是我的测试用例

这是我的 gradle 文件

0 投票
1 回答
617 浏览

java - Apache Camel 使用 JSON 路径表达式测试并断言 JSON 正文字段值

我正在尝试检查正文的字段值,它是一个 JSON 字符串,带有JsonPathExpression.

在下面的示例中,JsonPathExpression检查根 JSON 对象是否具有名为“ type”的字段。我想要实现的是,使用JsonPathExpression字段值“ type”是否等于某个字符串值来断言。

注意:我知道还有其他方法,通过提取消息正文,MockEndpoint#getReceivedExchanges但我不想使用它,因为它超出了断言范围。

这是我的测试课;

0 投票
1 回答
105 浏览

java - 无法为骆驼计时器创建 MockEndpoint

我正在使用 Camel Timer 组件从 Azure 存储容器中读取 blob。创建一个路由,它将每 10 秒轮询一次 blob,并由 CloudBlobProcessor 处理。

我想通过创建一个类似这样的模拟端点来编写一个测试用例

但是,在创建上述模拟端点时,我收到了以下异常。

下面是我试图跳过发送到原始端点的代码

0 投票
0 回答
116 浏览

apache-camel - Camel Springboot 应用程序的测试用例需要更长的构建时间

我为我的 Spring Boot 应用程序编写了骆驼测试用例,如下所示。

所以编写了 3 个测试用例,在测试用例的每个开头我都必须启动骆驼上下文并在最后清除它。使用此设置,在 Maven 构建测试测试中需要很长时间才能完成。大约有 30 个测试用例,构建需要 25 分钟才能完成。在运行时间方面是否有优化测试用例的空间?

0 投票
0 回答
46 浏览

docker - Apache camel:使用 docker 进行测试基础设施

我已经从源代码构建了 apache camel v3.9.0,并且还执行了https://camel.apache.org/manual/latest/building.html中提到的测试

问题是如何使用远程 docker 服务器运行测试?(一台主机上的骆驼代码,我们在另一台主机上执行 mvn install 和 docker 运行)

我尝试覆盖此处提到的 DOCKER_HOST 变量,但没有帮助。

DOCKER_HOST=tcp://myhost:2375 mvn 全新安装

我在这里错过了什么吗?

0 投票
2 回答
260 浏览

java - 测试时没有可用于 direct-vm 类型路由的骆驼消费者

我正在使用 Camel 进行单元测试,当我从 Camel In Action 存储库执行此测试时,它运行良好,但是当我将路由类型从 SEDA 更改为direct-vm时,它失败并显示以下消息:

原因:org.apache.camel.component.directvm.DirectVmConsumerNotAvailableException:端点上没有可用的消费者:direct-vm://camel。交换[ID....

这两种类型 SEDA 和 direct-vm 的区别在于第一种是异步的,第二种是同步的。这就是测试失败的原因吗?如何使测试适用于direct-vm类型的路由?

我正在使用 JDK 1.8 和 Camel 2.25.2

更新:我发现 adviceWith 中的mockEndpoints ()方法存在问题,路由没有被模拟。这是我启动测试时在日志中打印的内容:

但是,如果我改用 weaveByToUri 来模拟路线:

路线被模拟并且测试有效:

应该是mockEndpoints方法中的错误吗?

0 投票
2 回答
79 浏览

apache-camel - 模拟在骆驼测试中执行的中间路线的主体

Camel Test 组件的可用示例展示了如何测试路线的预期:

但是我需要做的是模拟中间路线的主体(手动设置),例如:

在这种情况下,我想完全避免 bean:exampleBean 的实际执行,模拟其执行结果。

我的测试课:

使用mockBeanExampleBean.whenAnyExchangeReceived(exchange -> exchange.getMessage().setBody("My message"));它时允许覆盖对 exampleBean 的输入,但不会避免其执行。

0 投票
1 回答
282 浏览

spring-boot - 使用骆驼测试支持对骆驼路线进行单元测试

我想正确的单元和集成测试用例来测试所有的功能流程。有人可以分享您对我如何创建模拟端点来监视目录以进行文件创建并通过多个路由进一步处理它们并将文件移动到不同目录的想法。

  1. 监视/hello目录以创建新文件。
  2. 如果存在基于文件前缀的文件,则使用容器名称更新标头。
  3. 根据文件名上传到适当的 azure blob 容器。
  4. 处理后进行 api 调用并将文件移动到/success目录。

FileWatcherRoute.java

FileWatcherRouteTest.java

0 投票
0 回答
51 浏览

apache-camel - Camel Rabbitmq 生产者在使用adviceWith 时未在单元测试中禁用

我想使用AdviceWith功能对产生到 RabbitMQ 的消息的 Camel 路由进行单元测试。

使用interceptSendToEndpoint方法我可以将rabbitmq端点从原始路由重定向到模拟端点,但是 Camel 仍然尝试启动 RabbitMQ 生产者。

这是原始路线的简单版本:

单元测试类(使用 camel-test-spring-junit5)

这个单元测试工作正常(拦截工作正常,并且在模拟端点上收到了预期的消息),但我仍然可以在日志中看到 RabbitMQ 生成的日志已启动,我想避免这种情况。

我虽然这skipSendToOriginalEndpoint()是用于此目的,但似乎并非如此。

另外:如果我删除route.mockEndpointsAndSkip("rabbitmq:*");单元测试失败的行(拦截/重定向到模拟端点不再完成,我不明白为什么......)

这个问题看起来像单元测试 Camel/RabbitMQ 路由问题,但接受的答案在我的情况下并不完全有效。