SOAP web hizmetimin SOAP hatalarını zarif bir şekilde işleme alıp almadığını ve örneğin istenmeyen özel durumlar oluşturup oluşturmadığını test etmek için JUnit ve Mockito kullanıyorum.SOAP hatasının hassas bir şekilde ele alınıp uygulanmadığı nasıl kontrol edilir?
Şimdiye kadar, aşağıdaki koddan da görebileceğiniz gibi, sadece SOAPFaultException
'un atılıp atılmadığını test ediyorum (tabii ki, atıyordum). SOAP hatasını alırken başka herhangi bir özel durumun oluşup oluşmayacağını nasıl kontrol edebildiğimi merak ediyorum.
Ayrıca bir istisna atmadan bir SOAP hatası ile alay etmenin bir yolu var mı (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);
}
}