Camel NotifyBuilder条件失败

时间:2017-10-17 10:11:45

标签: java apache-camel

我有一个类似的问题,路线稍微简单一些: Camel NotifyBuilder always returns false

我的路线如下:

PerfTestRouteBuilder

@Component
public class PerfTestRouteBuilder extends SpringRouteBuilder {

    /* (non-Javadoc)
     * @see org.apache.camel.builder.RouteBuilder#configure()
     */
    @Override
    public void configure() throws Exception {
        from("direct:test-input")
        .log("Creating test response object")
        .process(exchange -> {
            WOutputAccnLayout stubResponse = new WOutputAccnLayout();
            stubResponse.setWOutAccnAccNum("AB999999999");
            stubResponse.setWOutAccnCallStatus("SUCCESS");
            exchange.getIn().setBody(stubResponse, WOutputAccnLayout.class);
        })
        .log("Test response object created: ${body}")
        .end();
    }
}

我有以下测试:

PerfTestRouteBuilderIT

public class PerfTestRouteBuilderIT extends CamelTestSupport {

    @Override
    protected RouteBuilder createRouteBuilder() {
        return new PerfTestRouteBuilder();
    }

    @Before
    public void setup() throws Exception {
        super.setUp();
    }

    @Test
    public void test_configure_exchangeSentToTestRoute_stubResponseAddedToBody() throws Exception {
        startCamelContext();
        NotifyBuilder notify  = new NotifyBuilder(context)
                .from("direct:test-input")
                .whenAnyDoneMatches(body().isEqualTo(getStubResponse()))
                .create();

        template.sendBody("direct:test-input", "");

        assertThat(notify.matches(5, TimeUnit.SECONDS), is(true));

        stopCamelContext();
    }

    private WOutputAccnLayout getStubResponse() {
        WOutputAccnLayout stubResponse = new WOutputAccnLayout();
        stubResponse.setWOutAccnAccNum("AB999999999");
        stubResponse.setWOutAccnCallStatus("SUCCESS");
        return stubResponse;
    }

}

条件总是评估为false,我不明白为什么,考虑到getStubResponse方法返回的对象设置与路径中的对象完全一样。上次的解决方案是使用template.sendBody,或者通过路由端点创建交换并使用它,到目前为止这两种方法都没有用。我是如何使用骆驼测试套件的?

1 个答案:

答案 0 :(得分:0)

根据Itsallas'注释,问题归结为断言中使用的对象的.equals实现