0

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

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

问候, 尚卡尔

4

1 回答 1

0

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

@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);
}
于 2017-01-31T21:47:24.900 回答