【发布时间】:2018-05-17 17:02:31
【问题描述】:
我正在尝试模拟一个返回 null 作为响应的肥皂调用。
我有一个 java 类,我在其中调用 fedex Web 服务以验证解析后的地址。到这里一切都很好,但是当涉及到单元测试时,问题就出现了。 在测试中,我试图通过传递在实际java类中传递的相同请求参数来模拟soap调用,但是由于我传递的请求与soap调用不同,mock将响应返回为null期待在 java 类中。
Java类代码(abc.java)-
SOAPMessage payload = getAddressRequestPayload();
SOAPMessage responseMessage = soapConnection.call(payload, settings.addressUrl());
测试代码(junit4)-
SOAPMessage testResponse = getMockResponse();
SOAPMessage testPayload = abc.getAddressRequestPayload();
when(mockSoapConnection.call(testPayload, settings.addressUrl())).thenReturn(testResponse);
我还尝试从 java 类获取字符串 xml 请求有效负载,并在测试类中使用 fakeclock 附加新时间戳以匹配两个有效负载,但它似乎不同。 一种方法是在调用时提供通用soapmessage类 -
when(mockSoapConnection.call(any(SOAPMessage.class), anyString())).thenReturn(testResponse)
然后测试通过了,但这不是检查特定调用的正确方法。那么我如何知道有效负载之间的差异,或者有没有其他方法来模拟soap调用??
感谢任何帮助。
苏拉布
【问题讨论】:
-
有点混淆你在问什么,所以似乎使用最后一个代码你能够使测试通过,但是你想测试你在其中一个参数中接收到哪个值?
-
我的问题是,如果您要验证用作第二个参数的字符串是否是特定的,或者您正在尝试测试测试有效负载是否包含某些内容?
-
第一件事是我试图用实际的请求负载来模拟soap调用,但这不是明智的做法,因为soapMessage实例每次都会不同。
标签: java unit-testing soap mockito junit4