私は、SOAP WebサービスがSOAP障害を正常に処理するかどうかをテストするために、JUnitとMockitoを使用しています。たとえば、不要な例外は発生しません。SOAP障害が正常に処理されているかどうかを確認する方法?
これまでのところ、下のコードからわかるように、私はSOAPFaultException
がスローされているかどうかをテストしています(もちろん、私はそれを投げました)。私は、SOAPフォールトを受け取ったときに他の例外がスローされるかどうかをどうやって調べることができるのだろうかと思います。
また、例外(SOAPFaultException
)をスローせずにSOAP障害を模擬する方法はありますか?
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);
}
}