2015-09-08 4 views
0

В модульном тесте с верблюдом я могу сделать утверждения с помощью xpath, чтобы проверить правильность вывода xml. Но вместо этого я хотел бы использовать XMLUnit для проверки XML-файла на другой 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(); 
    } 

ответ

1

Вот один пример того, как можно решить эту проблему, используя 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()); 
    } 
} 
+1

mock.getExchanges(). Получим (0) .getIn(). GetBody (String.class); хватило бы :-) –