gpt4 book ai didi

java - RESTEasy 有客户端模拟框架吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:56 26 4
gpt4 key购买 nike

RESTEasy 提供了 Server-side Mock Framework用于模拟服务器请求。是否有等效的单元测试 client framework

InMemoryClientExecutor是为了这个目的吗?我找不到有关如何使用此类的文档和示例。

最佳答案

看起来 InMemoryClientExecutor 可用于客户端模拟。在 source 中寻找, 它在内部使用与服务器端模拟框架相同的类,即 MockHttpRequestMockHttpResponse

InMemoryClientExecutor 使您能够重写 createResponse 以模拟响应,并且如果您想自定义,还有一个采用 Dispatcher 的构造函数并以这种方式拦截调用。

这是一个利用 client framework 的快速而肮脏的片段例如,

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");
}
}

关于java - RESTEasy 有客户端模拟框架吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13631692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com