Я использую JUnit и Mockito, чтобы проверить, обрабатывает ли мой веб-сервис SOAP ошибки SOAP изящно и не вызывает никаких нежелательных исключений, например.Как проверить, обрабатывается ли ошибка SOAP изящно?
Так что до сих пор, как вы можете видеть из приведенного ниже кода, я тестирую только, выбрасывается ли SOAPFaultException
(конечно, я его бросил). Интересно, как я мог проверить, будет ли любое другое исключение выбрано при получении ошибки SOAP.
Также есть способ издеваться над ошибкой SOAP, не вызывая исключения (SOAPFaultException
)?
public class SOAPFaultsTest {
private MyObj myObj = (MyObj) mock(IMockClass.class);
@Before
public void create() {
SOAPFault soapFault = null;
try {
soapFault = SOAPFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL).createFault();
soapFault.setFaultString("unable to create new native thread");
soapFault.setFaultCode(QName.valueOf("soap:Server"));
} catch (SOAPException e) {
e.printStackTrace();
}
// Define behaviour of myObj mock object
when(myObj.randomMethod(any(RandomClass.class))).thenThrow(new SOAPFaultException(soapFault));
}
// Here I'm testing whether invoking myObj's randomMethod with a RandomClass object as an argument throws a SOAPFaultException.
// It does because this is how I defined its behaviour.
// What I really want to test is whether receiving a SOAP fault at any time is going to cause any trouble.
@Test(expected=SOAPFaultException.class)
public void testSOAPException() throws SOAPFaultException {
RandomClass rc = new RandomClass();
myObj.randomMethod(rc);
}
}