RESTEasy は、サーバー リクエストをモックするためのサーバー側モック フレームワークを提供します。クライアントフレームワークの単体テストに相当するものはありますか?
InMemoryClientExecutorはこの目的のために意図されていますか? このクラスの使用方法に関するドキュメントと例を見つけるのに苦労しています。
RESTEasy は、サーバー リクエストをモックするためのサーバー側モック フレームワークを提供します。クライアントフレームワークの単体テストに相当するものはありますか?
InMemoryClientExecutorはこの目的のために意図されていますか? このクラスの使用方法に関するドキュメントと例を見つけるのに苦労しています。
InMemoryClientExecutor
クライアント側のモックに使用できるようです。sourceを見ると、サーバー側のモック フレームワークと同じクラス、つまり と が内部的に使用されていMockHttpRequest
ますMockHttpResponse
。
InMemoryClientExecutor
応答をモックするためにオーバーライドする機能を提供し、そのように呼び出しをカスタマイズして傍受したい場合createResponse
は、 を取るコンストラクターもあります。Dispatcher
これは、クライアント フレームワークの例を利用した手短なスニペットです。
import javax.ws.rs.*;
import javax.ws.rs.core.Response.*;
import org.jboss.resteasy.client.*;
import org.jboss.resteasy.client.core.*;
import org.jboss.resteasy.client.core.executors.*;
import org.jboss.resteasy.mock.*;
import org.jboss.resteasy.plugins.providers.*;
import org.jboss.resteasy.spi.*;
public class InMemoryClientExecutorExample {
public interface SimpleClient {
@GET
@Path("basic")
@Produces("text/plain")
String getBasic();
@PUT
@Path("basic")
@Consumes("text/plain")
void putBasic(String body);
@GET
@Path("queryParam")
@Produces("text/plain")
String getQueryParam(@QueryParam("param")String param);
@GET
@Path("matrixParam")
@Produces("text/plain")
String getMatrixParam(@MatrixParam("param")String param);
@GET
@Path("uriParam/{param}")
@Produces("text/plain")
int getUriParam(@PathParam("param")int param);
}
public static void main(String[] args) {
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
ClientExecutor executor = new InMemoryClientExecutor() {
@Override
protected BaseClientResponse<?> createResponse(ClientRequest request, MockHttpResponse mockResponse) {
try {
System.out.println("Client requesting " + request.getHttpMethod() + " on " + request.getUri());
}
catch(Exception ex) {
ex.printStackTrace();
}
mockResponse.setStatus(Status.OK.getStatusCode());
return super.createResponse(request, mockResponse);
}
};
SimpleClient client = ProxyFactory.create(SimpleClient.class, "http://localhost:8081", executor);
client.putBasic("hello world");
}
}