【发布时间】:2021-08-25 15:27:30
【问题描述】:
我正在对 Camel 路线进行集成测试。
骆驼路线:
from("direct:abc")
.routeId("abc-route")
.process(MyProcessor())
.toD("direct:xyz")
由于这条路线正在被隔离测试,我需要在测试中设置标题;以前,他们是从另一条路线到达的。我该怎么做?
简化测试类:
@SpringBootTest
@MockEndpoints
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
class MyRouteTest {
@Autowired
lateinit var camelContext: CamelContext
@Produce(uri = "direct:abc")
lateinit var template: ProducerTemplate
@EndpointInject(uri = "mock:direct:xyz")
lateinit var destEndpoint: MockEndpoint
@Test
fun `should test route`() {
template.sendBody("")
}
}
我已经尝试过camelContext.adapt(ModelCamelContext::class.java),但仍然无法到达路线并强行修改它。
【问题讨论】:
-
ProducerTemplate 有几种方法可用于发送带有标题的正文。即
template.sendBodyAndHeaders(...)或单个标头template.sendBodyAndHeader(...)。您还可以编织路线并添加.setHeader("headerName", constant(value))或使用.setHeader("headerName", simple(expression))代替常量值来添加简单语言评估值
标签: spring-boot kotlin testing apache-camel