Apoorva6
9 years agoFrequent Contributor
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 multiple users placing response file in same path with name of ordernumber value from request. They need to get their corresponding response only after hiting same mock URL. I am using free version of soapui .Thanks in advance.
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 com.eviware.soapui.support.GroovyUtils(context) 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="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <Body> <Fault> <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> </Fault> </Body> </Envelope>