我正在編寫一個使用Jersey下的引擎向Java RESTful API(第三方)發送HTTP請求的Java類。如何模擬Jersey REST客戶端拋出HTTP 500響應?
我還想編寫一個JUnit測試來模擬發送HTTP 500響應的API。作爲新澤西州的新手,我很難看到我必須做些什麼來模擬這些HTTP 500響應。
到目前爲止,這是我最好的嘗試:
// The main class-under-test
public class MyJerseyAdaptor {
public void send() {
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
String uri = UriBuilder.fromUri("http://example.com/whatever").build();
WebResource service = client.resource(uri);
// I *believe* this is where Jersey actually makes the API call...
service.path("rest").path("somePath")
.accept(MediaType.TEXT_HTML).get(String.class);
}
}
@Test
public void sendThrowsOnHttp500() {
// GIVEN
MyJerseyAdaptor adaptor = new MyJerseyAdaptor();
// WHEN
try {
adaptor.send();
// THEN - we should never get here since we have mocked the server to
// return an HTTP 500
org.junit.Assert.fail();
}
catch(RuntimeException rte) {
;
}
}
我熟悉不過的Mockito在嘲諷庫中沒有偏好。基本上,如果有人可以告訴我需要嘲笑哪些類/方法來拋出HTTP 500響應,我可以弄清楚如何實際執行這些模擬。
謝謝@ ktm5124(+1) - 但我需要從*客戶端*嘲笑這一點。這是我打的第三方API,所以我不能在服務器代碼中嘲笑任何東西。再次感謝! – IAmYourFaja
ClientHandlerException是您需要的類嗎?我沒有和澤西客戶合作過,所以我可能會在這裏黑暗中。順便說一句,謝謝你把我放在魔鬼的標記之上! – ktm5124