Camel Stub数据库交互单元测试

时间:2016-12-20 23:13:49

标签: apache-camel camel-test

我是骆驼世界的新手。使用camel-cxf,我已经实现了一个webservice(基于请求上的id,如果从具有记录详细信息的响应中找到,则查询数据库,否则返回静态响应),其具有一些非常基本的数据库交互和转换。

我正在尝试编写一些单元测试(独立于数据库,即存根化数据库交互以形成静态响应)。有没有办法跳过发送到数据库端点并在交换机上发送静态数据(模仿数据库记录)并验证转换结果?

此致 香卡

1 个答案:

答案 0 :(得分:0)

我将以下代码添加到我的测试类中,并使用expectedBodiesReceivedInAnyOrder方法验证了mockendpoints。

@Before
public void mockEndPoints() throws Exception{       
    AdviceWithRouteBuilder mockBldr = new AdviceWithRouteBuilder() {            
        @Override
        public void configure() throws Exception {              
            interceptSendToEndpoint("mybatis:queryTable?statementType=SelectList")              
            .skipSendToOriginalEndpoint()   
            .process(new Processor(){
                @Override
                public void process(Exchange exchange) throws Exception {
                    ArrayList<DataObject> ruleList = new ArrayList<DataObject>();
                        ruleList.add(new DataObject(1,"ABC"));                      
                        exchange.getIn().setBody(ruleList);
                    }               
            })
            .to("mock:mybatisSelect");                              
        }
    };
    context.getRouteDefinition("route1").adviceWith(context, mockBldr);
}