gpt4 book ai didi

java - Jersey 测试框架 - 为 grizzly 中的所有未知路径定义默认错误响应

转载 作者:行者123 更新时间:2023-11-28 20:32:55 25 4
gpt4 key购买 nike

为了测试连接到 facebook 图形 API 的 API,我们使用基于 Jersey 测试框架和 grizzly 的模拟服务器设置:

@Path("/" + PostRest.RESOURCE)
@Produces("application/json")
public class PostRest {

public static final String RESOURCE = "111_222";

@GET
public Response getPost(@QueryParam("access_token") String access_token) {
if (access_token != VALID_TOKEN) {
return Response.status(400).entity(createErrorJson()).build();
}
return Response.status(200).entity(createSomeJsonString()).build();
}

现在,虽然我可以使用正确的错误响应对无效或丢失的 access_token 使用react,但我还想测试我的 API 在尝试访问 facebook 上的未知资源 时是否正确 react ,即未知路径.

现在,如果我尝试访问说“/111_2”,我的灰熊显然会收到 404,但 facebook 似乎捕获了该错误并将其包装在 Json 响应 中,其中包含字符串“假”状态 200

那么...我该如何设置测试框架以返回

Response.status(200).entity("false").build();

每次调用已知路径?

基本示例:

@ContextConfiguration({ "classpath:context-test.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class SomeTest extends JerseyTest {

@Inject
private SomeConnection connection;

private String unkownId = "something";


public SomeTest() throws Exception {
super("jsonp", "", "com.packagename.something");
}


@Test(expected = NotFoundException.class)
public void testUnkownObjectResponse() throws NotFoundException {
// here it should NOT result in a 404 but a JSON wrapped error response
// which will be handled by the Connection class and
// result in a custom exception
connection.getObject(unkownId);
}

或者也许我可以设置 grizzly 以按需要运行...?!

谢谢!

最佳答案

显然 facebook 有自己的服务来拦截错误。同样的事情应该在你的代码中完成。只需公开您自己的拦截所有请求的测试服务

@Path("/test/errorTrap")
public class ErrorTrapService{
....
}

此服务将产生您想要的任何响应。所以任何不存在的页面,如 http://mytest/test/errorTrap/111_2将被测试服务拦截并为您产生预期的响应

关于java - Jersey 测试框架 - 为 grizzly 中的所有未知路径定义默认错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10137228/

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