Макет ||Тест JUnit метод createSOAPMessage - PullRequest
0 голосов
/ 11 февраля 2019

Потерян как лучший способ / метод при тестировании моего метода createSOAPMessage.По сути, этот класс должен делать вызов SOAP к нашей центральной базе данных и извлекать определенные данные в формате XML.Некоторые ключевые слова были изменены для защиты личности.

public class WebService {
        public SOAPMessage getData(String ticketNumber) throws Exception{
        //Create the SOAP Factory/Connections
        SOAPConnectionFactory soapConnectionFactory;
        SOAPConnection soapConnection;

        //Create SOAP Connection
        soapConnectionFactory = SOAPConnectionFactory.newInstance();
        soapConnection = soapConnectionFactory.createConnection();

        //Send SOAP Message to SOAP Server
        String url = "http://blahblah.asmx";
        SOAPMessage soapResponse = soapConnection.call(createSOAPMessage(ticketNumber), url);
        soapConnection.close();

        return soapResponse;
    }



public static SOAPMessage createSOAPMessage(String ticketNumber) throws Exception {

        MessageFactory messageFactory = MessageFactory.newInstance();
        SOAPMessage soapMessage = messageFactory.createMessage();
        SOAPPart soapPart = soapMessage.getSOAPPart();

        String serverURI = "http://blahblah";

        SOAPEnvelope envelope = soapPart.getEnvelope();
        SOAPBody soapBody = envelope.getBody();
        SOAPHeader soapHeader = envelope.getHeader();

        envelope.removeNamespaceDeclaration(envelope.getPrefix());
        envelope.addNamespaceDeclaration("abc", serverURI);

        envelope.setPrefix("soapenv");
        soapHeader.setPrefix("soapenv");
        soapBody.setPrefix("soapenv");

        MimeHeaders headers = soapMessage.getMimeHeaders();
        headers.addHeader("Content-Type", "text/xml; charset=utf-8");
        headers.addHeader("SOAPAction", "http://blahblah.net/ExtractXML");

        //This String xml will contain the relevant data I am pulling from the db with specific column names. I've removed them as well for protection.
        String xml = "<Title>" + "<Date>" + //you get the idea.




        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();

        Document doc = builder.parse(new InputSource(new StringReader(xml)));


        Element extractElement = doc.getDocumentElement();
        Element newDocumentElement = doc.createElementNS(serverURI, extractElement.getNodeName());

        // Set the desired namespace and prefix
        newDocumentElement.setPrefix("abc");

        Element xDoc = doc.createElement("xDoc");
        Element xDocElement = doc.createElementNS(serverURI, xDoc.getNodeName());
        xDocElement.setPrefix("abc");
        newDocumentElement.appendChild(xDocElement);

        // Copy all children
        NodeList list = extractElement.getChildNodes();
        while (list.getLength() != 0) {
            newDocumentElement.appendChild(list.item(0));
        }

        // Replace the original element
        doc.replaceChild(newDocumentElement, extractElement);

        soapBody.addDocument(doc);
        soapMessage.saveChanges();

        return soapMessage;

    }
}

Поскольку я не вызываю метод getData внутри самого класса, мне не нужно создавать тестовые случаи для этого метода.Идея состоит в том, чтобы просто JUnit протестировать этот класс сам и создать контрольные примеры для метода createSOAPMessage.Я просто не знаю как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...