如何使用camel mock 获取full XML?

How to use camel mock to get full XML?

在 camel 的单元测试中,我可以使用 xpath 进行断言以检查输出 xml 是否正确。但是,我想使用 XMLUnit 来针对另一个整个 xml 文件验证 xml。那可能吗?以下测试成功,但我想调整它以获得实际的 XML.

  @Test
  public void testSupplierSwitch() throws Exception
  { 
    MockEndpoint mock = getMockEndpoint("mock:market-out");
    mock.expectedMessageCount(1);

    EdielBean edielBean = (EdielBean)context.getBean("edielbean");
    edielBean.startSupplierSwitch(createCustomer(), createOrder(), "54", "43");

    assertMockEndpointsSatisfied();
  }

这是一个如何解决它的例子,使用 mockEndpoint.getExchanges()

public class XmlUnitTest extends CamelTestSupport{

    @EndpointInject(uri = "mock:market-out")
    MockEndpoint marketOut;

    @Override
    @Before
    public void setUp() throws Exception {
        super.setUp();
        context.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("direct:in")
                    .setBody(constant("<xml>data</xml>"))
                    .to(marketOut.getEndpointUri());
            }
        });


    }

    @Test
    public void sameXml() throws Exception {
        marketOut.expectedMessageCount(1);
        template.sendBody("direct:in", "body");
        marketOut.assertIsSatisfied();
        final String actual = marketOut.getExchanges().get(0).getIn().getBody(String.class);
        final Diff diff = XMLUnit.compareXML("<xml>data</xml>", actual);
        assertTrue(diff.similar());
        assertTrue(diff.identical());
    }

    @Test()
    public void notSameXml() throws Exception {
        marketOut.expectedMessageCount(1);
        template.sendBody("direct:in", "body");
        marketOut.assertIsSatisfied();
        final String actual = marketOut.getExchanges().get(0).getIn().getBody(String.class);

        final Diff diff = XMLUnit.compareXML("<xml>invalid</xml>", actual);
        assertFalse(diff.similar());
        assertFalse(diff.identical());
    }
}