Forum Discussion

Apoorva6's avatar
Frequent Contributor
9 years ago

How to get soap mock response from external file!

I have soap request with ordernumber tag. I will be saving mock response with file name same as ordernumber value in request. How to get mock response of specific ordernumber request? There will be mu...
  • nmrao's avatar
    9 years ago

    Sorry to interrupt Rup.

    The details helped Apoorva.


    And this is my first try on mocking, followed the video from the same link that I provided earlier.


    Here are the steps:


    1. Generate a SOAP Mock Service by right click on to the service that you intended ( I believe, you know it already, added this for those who not aware, and this is first time for me too)


    2. Selete the intended mock operation.

    • Choose SCRIPT for Dispatch, Response 1 for Default Response
    • Open Response 1 and remove the existing reponse and just have ${content} as value for response
    • In the script editor have the following script:


    /*This script reads the salesOrderNumber from request using xpath
    * and checks corresponding response xml file from
    * mockResponses directory of your soapui project location.
    * Also expects a soapFault.xml file in the same location
    * in order to send soap fault if no sales order number maches the
    * existing files.
    * For example, soapui project located under C:\soapuiProjects
    * create a subdirectory called mockResponses under above directory
    * Make sure all your mock response files for sales orders under
    * C:\soapuiProjects\mockResponses directory including soapFault.xml
    * Assuming that the soap response file extension is xml, not txt
    def groovyUtils = new def holder = groovyUtils.getXmlHolder(mockRequest.requestContent) def soNumber = holder.getNodeValue("//*:BillingOrderLoadRequest/*:salesOrderNumber") def file = new File (groovyUtils.projectPath+"/mockResponses/${soNumber}.xml") def fileToLoad = 'soapFault' if (file.exists()) { fileToLoad = soNumber } context.content = groovy.xml.XmlUtil.serialize(new XmlParser().parse(groovyUtils.projectPath+"/mockResponses/${fileToLoad}.xml"))


    Sample soapFault.xml


    <Envelope xmlns="" xmlns:xsi="" xmlns:xsd="">   
             <faultcode xsi:type="xsd:string">Client</faultcode>		 
             <faultstring xsi:type="xsd:string">Could not find the mock response file for the given sales order number</faultstring>