使用MockEndpoint测试骆驼路线

Rod*_*lfo 1 guice apache-camel

为什么此测试失败,并显示“ java.lang.AssertionError:mock:// destino收到的消息计数。应为:<12>,但为:<0>”?我只是想测试骆驼是否真的可以重新排序邮件。

进口:

import java.util.ArrayList;
import java.util.List;

import org.apache.camel.CamelContext;
import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.guice.CamelModuleWithRouteTypes;
import org.jukito.JukitoModule;
import org.jukito.JukitoRunner;
import org.junit.Test;
import org.junit.runner.RunWith;

import com.google.inject.Inject;
Run Code Online (Sandbox Code Playgroud)

考试:

@RunWith(JukitoRunner.class) public class ResequenceTest {

    @Inject protected CamelContext context;
    @Produce protected ProducerTemplate template;

    public static class Module extends JukitoModule {
        @SuppressWarnings("unchecked") protected void configureTest() {
            install(new CamelModuleWithRouteTypes(OrderingTestRouteBuilder.class));
        }
    }

    @Test public void testDozenMsgsOrderByIntegerBody() throws Exception {
        // fail();
            Integer[] input = new Integer[] {12, 11, 10, 9, 8, 7, 6, 5, 1, 2, 3, 4};
            List<Integer> expectedOutput = new ArrayList<Integer>();
        for (int i=1; i<=12; i++) {expectedOutput.add(i);};
        for (Integer i : input) {template.sendBody("mock:receptor", i);};
        MockEndpoint resultEndpoint = context.getEndpoint("mock:destino", MockEndpoint.class);
        resultEndpoint.expectedBodiesReceived(expectedOutput);
        resultEndpoint.assertIsSatisfied();
    }

}
Run Code Online (Sandbox Code Playgroud)

路线:

class OrderingTestRouteBuilder extends RouteBuilder {
        @Override public void configure() throws Exception {
        from("direct:start")
            .to("mock:receptor")
            .resequence(body(Integer.class))
            .to("mock:destino");
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢,Rodolfo

Cla*_*sen 5

将消息发送到Camel 之前,您应该在模拟上设置期望值。步骤是

  1. 在模拟上设置期望
  2. 发送信息
  3. 断言