假設有人開發了rest API,它以json格式返回數據,但他沒有將響應Content-Type
設置爲application/json
,而是text/html
。java REST Content-Type:text/html帶有html標籤的確定響應體
現在我有測試寫放心:
given()
.param("username", username)
.param("password", password)
.when()
.get("/authenticate")
.then()
.statusCode(200)
.body("user.id" , hasItem(20));
,但它不工作。我註銷響應的身體和,這就是我得到:
<html>
<body>{"key":"752E7A74E8F3999BE9EFE3EA0E0DF320","user":{"id":20,"firstName":"K1","lastName":"K1","role":"ROLE_CUSTOMER","phoneNumber":"888888888"},"expirationDate":"2016-08-10T13:52:50+02:00"}</body>
</html>
和錯誤:
FAILED: test_login_as_valid_customer("888888888", "3432")
java.lang.AssertionError: 1 expectation failed.
JSON path key doesn't match.
Expected: 20
Actual:
身體標記之間,這正是我期望的JSON,但哪裏html標籤從何而來?當我在Postman或Paw中甚至在Web瀏覽器中測試api方法時,我無法看到它們(因爲它使用url參數很簡單)。
我懷疑我得到錯誤「JSON路徑密鑰不匹配」。因爲這些標籤。
在郵差中,我沒有指定Accept頭。當我嘗試RESTAssured測試 - 給定()。接受(ContentType.JSON)它返回text/html無論如何 –
我只是試圖執行類似的測試與api返回Content-Type:application/json並通過。 json中的目標變量被發現並被正確提取以進行斷言。 –