2017-07-07 52 views
1

我正在使用WireMock來模擬SOAP服務。WireMock中的SOAP附件

它工作的很好,但其中一個服務包含附件。 有沒有什麼辦法可以用WireMock來模擬它?

謝謝

+0

那麼你使用MTOM? – ThomasRS

+0

是的,我是。在我的響應對象中,它存儲爲'org.apache.axis.attachments.AttachmentPart'。 –

+0

那麼附件是內置還是外置? – ThomasRS

回答

0

是的,這是可能的。 首先,您可以使用SOAP ui來模擬您期望的附件響應。 [在soap資源上,右鍵單擊:生成SOAP模擬服務] 在創建的模擬上,響應中應該會看到與wsld相對應的虛擬主體。在那裏你可以點擊附件並添加一個文件: enter image description here 你運行這個模擬並嘗試用肥皂請求手動點擊它,然後應該出現在請求部分。

它會爲您生成附件的回覆。 您可以看到原始的部分看起來像這樣:

Content-Type: multipart/related; type="application/xop+xml"; start="<[email protected]>"; start-info="text/xml"; boundary="----=_Part_19_678369072.1513344309074", 
MIME-Version: 1.0 
------=_Part_19_678369072.1513344309074 
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml" 
Content-Transfer-Encoding: 8bit 
Content-ID: <[email protected]> 

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:getFileResponse xmlns:ns3="urn:eu:europa:ec:etrustex:integration:service:notification:v2.0" xmlns:ns2="urn:eu:europa:ec:etrustex:integration:service:filerepository:v2.0" xmlns="urn:eu:europa:ec:etrustex:integration:model:common:v2.0"> 
     <ns2:fileWrapper> 
      <Content><inc:Include href="cid:test.txt" xmlns:inc="http://www.w3.org/2004/08/xop/include"/></Content> 
     </ns2:fileWrapper> 
     </ns2:getFileResponse> 
    </S:Body> 
</S:Envelope> 
------=_Part_19_678369072.1513344309074 
Content-Type: text/plain; charset=us-ascii 
Content-Transfer-Encoding: 7bit 
Content-ID: <test.txt> 
Content-Disposition: attachment; name="test.txt" 

TEST 
------=_Part_19_678369072.1513344309074-- 

現在,你可以設置wiremock像這樣的東西:

{   
    "request": {          
     "method": "POST", 
     "urlPattern": "/mockFileRepository" 
    },          
    "response": {         
     "status": 200,       
     "bodyFileName": "responseTest.raw", 
     "headers": { 
      "Content-Type": "multipart/related; type=\"application/xop+xml\"; start=\"<[email protected]>\"; start-info=\"text/xml\"; boundary=\"----=_Part_19_678369072.1513344309074\"", 
      "MIME-Version": "1.0" 
     } 
    }            
} 

注重標題內容類型應該是一樣的你從肥皂用戶那裏得到的原料。

的responseTest.raw看起來是這樣的:

------=_Part_19_678369072.1513344309074 
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml" 
Content-Transfer-Encoding: 8bit 
Content-ID: <[email protected]> 

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:getFileResponse xmlns:ns3="urn:eu:europa:ec:etrustex:integration:service:notification:v2.0" xmlns:ns2="urn:eu:europa:ec:etrustex:integration:service:filerepository:v2.0" xmlns="urn:eu:europa:ec:etrustex:integration:model:common:v2.0"> 
     <ns2:fileWrapper> 
      <Content><inc:Include href="cid:test.txt" xmlns:inc="http://www.w3.org/2004/08/xop/include"/></Content> 
     </ns2:fileWrapper> 
     </ns2:getFileResponse> 
    </S:Body> 
</S:Envelope> 
------=_Part_19_678369072.1513344309074 
Content-Type: text/plain; charset=us-ascii 
Content-Transfer-Encoding: 7bit 
Content-ID: <test.txt> 
Content-Disposition: attachment; name="test.txt" 

TEST 
------=_Part_19_678369072.1513344309074-- 

瞧!