2014-02-17 39 views
0
def client = new SOAPClient("http://...") 
def response = client.send(
    """<?xml version='1.0' encoding='UTF-8'?> 
     <soap-env:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'> 
      <soap-env:Body> 
       <GetFoo>bar</GetFoo> 
      </soap-env:Body> 
     </soap-env:Envelope>""" 
) 
return response.xmlElement1.xmlElement2.xmlElement3.text() 

這是我項目中的一塊服務代碼。 def響應是一個名爲HTTPResponse的WsLite庫對象。第三方對象的Grails/Groovy模擬動態屬性

在我的單元測試,我想這個嘲笑響應,因爲這部分代碼:

def mockClient = Mock(SOAPClient) 
     mockClient.send(XML_REQUEST) >> createMockResponse() 

我不太清楚我應該怎麼嘲笑這個響應對象並填充一些期望值。

例如,response.xmlElement1.xmlElement2.xmlElement3.text()的模擬響應是'ABC'。

回答

2

存根的響應與返回值的預期模式返回地圖

mockClient.send(XML_REQUEST) >> { 
    [ xmlElement1: [ xmlElement2: [ xmlElement3: [ text : { 'ABC' } ] ] ] ] 
} 

assert response.xmlElement1.xmlElement2.xmlElement3.text() == 'ABC'