内部でJerseyを使用してHTTPリクエストをRESTfulAPI(サードパーティ)に送信するJavaクラスを作成しています。
また、HTTP500応答を返すAPIをモックするJUnitテストを作成したいと思います。ジャージーに慣れていないので、これらのHTTP500応答をモックするために私がしなければならないことを理解するのは難しいです。
これまでのところ、これが私の最善の試みです。
// 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応答をスローするためにモックする必要があるクラス/メソッドを教えてくれれば、実際にモックを実装する方法を理解できます。