首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache Camel:如何为beanRef获取正确的模拟端点?

Apache Camel:如何为beanRef获取正确的模拟端点?
EN

Stack Overflow用户
提问于 2013-05-29 01:14:16
回答 1查看 8.6K关注 0票数 2

我有一条这样的路线

代码语言:javascript
运行
复制
from("direct:start").beanRef("someBean");

对于单元测试,我尝试为其获取模拟端点,但不满足expectedMessageCount条件。

代码语言:javascript
运行
复制
MockEndpoint beanMock = getMockEndpoint("mock:bean:someBean");
beanMock.expectedMessageCount(1);

如果我把我的路线改成这样,一切都会很好。

代码语言:javascript
运行
复制
from("direct:start").to("bean:someBean");

下面的操作也不起作用:

代码语言:javascript
运行
复制
MockEndpoint beanMock = getMockEndpoint("mock:ref:someBean");

如何为beanRef获取正确的模拟端点?

EN

回答 1

Stack Overflow用户

发布于 2013-05-29 12:47:24

问题是beanRef不会产生端点,所以您不能通过getMockEndPoint访问它。如果您想测试bean的结果,可以添加一个模拟endPoint并测试其内容。

下面是一个示例:

代码语言:javascript
运行
复制
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

public class BeanRefMock extends CamelTestSupport {
    public static class SomeBean{
        public void handle(Exchange ex){
            System.out.println("SomeBean : " +ex);
            ex.getIn().setBody(ex.getIn().getBody() +" is Processed By Bean");
        }
    }
    @Override
    protected CamelContext createCamelContext() throws Exception {
        CamelContext camelContext = super.createCamelContext();
        return camelContext;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.apache.camel.test.junit4.CamelTestSupport#createRouteBuilder()
     */
    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("direct:start").bean(SomeBean.class).to("mock:postBean");
            }
        };
    }

    @Test
    public void testQuoteCount() throws Exception {
        MockEndpoint mockEndpoint = getMockEndpoint("mock:postBean");
        mockEndpoint.expectedBodiesReceived("hello mock is Processed By Bean");

        template.sendBody("direct:start", "hello mock");
        mockEndpoint.assertIsSatisfied();
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16797827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档