0

我正在处理一项任务,我在其中一个处理器中设置了标题。

exchange.getIn().setHeader("ResourceSpec", equipmentSpec.getSpec());

在编写测试用例时,它期望值。因为测试用例失败了。

模拟路线测试:

void advice(@Observes CamelContextStartingEvent event, CamelContext context) throws Exception {

    context.getRouteDefinition(test.update)
           .adviceWith(context, new AdviceWithRouteBuilder() {
               @Override
               public void configure() {           
                   weaveByToString(".*lineInquiryBy.*")
                       .replace()
                       .to("mock:lineInquiry");
               }
           });

需要帮助在模拟中设置标题。这样在执行时,处理器就可以获得该值。

使用骆驼测试和骆驼测试cdi。

谢谢

4

1 回答 1

0

不确定我是否理解你的问题。我的理解:

  1. 您有一个设置标题的处理器ResourceSpec
  2. 您有一个测试可以adviceWith从路由中删除该处理器
  3. 因此,由于ResourceSpec未设置标头,后续路由步骤失败

如果我理解你的问题是正确的,你可以简单地“插入”setHeader你移除处理器的地方

weaveByToString(".*lineInquiryBy.*")
    .replace()
    .to("mock:lineInquiry")
    .setHeader("ResourceSpec", constant("static value"));

如果您需要动态值(例如来自消息头),您可以使用Camel Simple表达式语言:

.setHeader("ResourceSpec", simple("${header.myHeader}"));
于 2020-07-10T05:47:30.007 回答