为了测试我们连接到 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 做出反应,但我还想测试我的 API 在尝试访问facebook 上的未知资源(即未知路径)时是否正确反应。
现在,如果我尝试访问说“/111_2”,我显然会从我的灰熊那里得到一个 404,但 facebook 似乎捕获了该错误并将其包装在Json 响应中,其中包含状态为 200的字符串“false”。
所以...我如何设置测试框架以返回
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 以按需要行事..?!
谢谢!