In this code, I mocked one of the methods of the ValidateHandlerSoapClient class that was created and called this method (soapClientSpy.processSoapRequestRespons) in validateMsisdnHandlerIRSpy.validate (). So soapClientSpy.processSoapRequestResponse does not work, the real method is called instead.
@RunWith(PowerMockRunner.class) @PrepareForTest({ValidateMsisdnHandler.class,ValidateHandlerSoapClient.class}) public class Demo { MessageControl messageControl=PowerMockito.mock(MessageControl.class); Validate validate=PowerMockito.mock(Validate.class); ValidateMsisdnHandlerIR validateMsisdnHandlerIRSpy = PowerMockito.spy(new ValidateMsisdnHandlerIR()); ValidateHandlerSoapClient soapClientSpy = PowerMockito.spy( new ValidateHandlerSoapClient()); @Before public void initialize() throws Exception { PowerMockito.when(validate.getAccountId()).thenReturn("0879221485"); PowerMockito.doReturn(true).when(validateMsisdnHandlerIRSpy, "isPrePaid",anyString()); MemberModifier.field( ValidateMsisdnHandlerIR.class, "endDate").set( validateMsisdnHandlerIRSpy, "10-FEB-2015"); PowerMockito.when(soapClientSpy.processSoapRequestResponse(anyString())).thenReturn(true); PowerMockito.whenNew(ValidateHandlerSoapClient.class).withNoArguments().thenReturn(soapClientSpy); } @Test public void testValidateMsisdn_Cr6_Roverprempay_Not_Roverpayg() throws Exception{ Response response = validateMsisdnHandlerIRSpy.validate(validate,messageControl); }
source share