1
爲了測試我們的API連接到我們使用基於新澤西測試框架一個模擬服務器設置和灰熊Facebook的圖形API的所有未知的路徑默認錯誤響應:新澤西測試框架 - 定義在灰熊
@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,我也想測試,試圖在Facebook的訪問的未知的資源,即一個未知的路徑時,我的API正確反應。
現在我從灰熊得到了404很顯然,如果我嘗試訪問說「/ 111_2」,但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);
}
或者,也許我可以設置灰熊表現爲期望..?!
謝謝!
所以您的解決方案表明,我只是創造將產生在我的測試中一個所需的響應和訪問其他資源?這意味着什麼,創建一個已知資源並將其稱爲未知?這就是我計劃在第一時間做的。 但是你對曝光的想法給了我一個想法。我可能會嘗試攔截灰熊過濾器鏈,檢查是否可以將調用禁用到現有資源,並且如果不將它轉發到默認位置,然後將產生期望的錯誤... 我會更新這個帖子的最後結果給任何感興趣的人 謝謝你! – Pete 2012-04-23 06:14:09
@Pete「會產生所需的響應,並在我的一個測試中訪問它?」 - 是的,你明白了!不用謝。 – Dewfy 2012-04-23 07:37:13