如何测试只设置属性的骆驼路线

How to test camel route that only set properties

我有一个路由生成器,它根据消息的内容设置特定的属性。它不会将它发送到其他端点,因此我无法模拟它们并检查它们得到了什么。 我可以生成消息或交换,但是在它被这个路由生成器转换后有没有办法检查它?

假设您的路由是同步的(即不是 from:seda),您可以简单地检查 属性 是否已在您通过 ProducerTemplate 发送的交换上更新。

假设您需要检查 属性 TestProp:

的值
package com.example.demo;

import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.ExchangeBuilder;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import static org.assertj.core.api.Assertions.assertThat;

@SpringBootTest
class PropertyUpdateTest {
    @Produce("direct:testProps")
    ProducerTemplate template;

    @Autowired
    CamelContext camelContext;

    @Test
    void verifyRouteUpdatesProperty() {
        Exchange exchange = ExchangeBuilder.anExchange(camelContext)
                .withProperty("TestProp", "InitialVal")
                .build();

        template.send(exchange);

        assertThat(exchange.getProperty("TestProp")).isEqualTo("UpdatedVal");
    }

}