我正在编写一个 Java 类,它在后台使用Jersey将 HTTP 请求发送到 RESTful API(第 3 方)。
我还想编写一个模拟 API 发送回 HTTP 500 响应的 JUnit 测试。作为泽西岛的新手,我很难看出我必须做什么来模拟这些 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 响应,我就可以弄清楚如何实际实现模拟。