Vorrei usare qualcosa come EasyMock per questo test. I framework di simulazione sono un modo ideale per rimuovere le dipendenze esterne in una classe e offrono un controllo totale sul risultato delle dipendenze esterne durante i test. Per estendere un po 'il tuo esempio:
class WebClass {
private WebServiceInterface webserviceInterface;
void method(){
R result = webServiceInterface.performWebServiceCall();
... do something with result
}
public void setWebServiceInterface(WebServiceInterface webServiceInterface){
this.webServiceInterface = webServiceInterface;
}
}
interface WebServiceInterface {
R performWebServiceCall();
}
class WebClassTest {
private WebServiceInterface mock;
private R sampleResult = new R();
@Before
public void before(){
mock = EasyMock.createMock(WebServiceInterface.class);
}
@Test
public void test() {
WebClass classUnderTest = new WebClass();
EasyMock.expect(mock.performWebServiceCall()).andReturn(sampleResult);
classUnderTest.setWebServiceInterface(mock);
classUnderTest.method();
EasyMock.verify(mock);
}
}
La prima cosa che devi fare è estrarre la logica della tua classe in cui usi Jersey per ottenere una WebResource e chiamare il servizio web in una classe separata. La creazione di un'interfaccia per questa classe ti consentirà di creare un mock a cui è possibile dettare il comportamento.
Una volta creata questa interfaccia, puoi creare una simulazione usando EasyMock, che restituirà un oggetto specificato che si adatta al tuo caso di test. L'esempio sopra mostra una semplificazione del modo in cui strutturare un test mocked di base e come funzionerà la tua interfaccia.
Per ulteriori informazioni sui framework di simulazione, consultare questa domanda . Inoltre, questo esempio presuppone l'utilizzo di Java, ma i framework di simulazione sono disponibili in tutte le lingue e sebbene vengano implementati in modo diverso, funzioneranno generalmente allo stesso modo