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库的对象。
在我的单元测试中,我想将此响应模拟为此代码的一部分:
def mockClient = Mock(SOAPClient)
mockClient.send(XML_REQUEST) >> createMockResponse()
我不太确定如何模拟此响应对象并填充一些预期值。
例如,response.xmlElement1.xmlElement2.xmlElement3.text()
的模拟回复是'ABC'。
答案 0 :(得分:2)
将返回映射的响应存储为具有预期返回值的模式
mockClient.send(XML_REQUEST) >> {
[ xmlElement1: [ xmlElement2: [ xmlElement3: [ text : { 'ABC' } ] ] ] ]
}
assert response.xmlElement1.xmlElement2.xmlElement3.text() == 'ABC'