【发布时间】:2016-08-03 12:00:53
【问题描述】:
假设有人开发了rest api,它以json格式返回数据,但他没有将响应Content-Type设置为application/json而是text/html。
现在我已经用 REST Assured 编写了测试:
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 甚至网络浏览器中测试 api 方法时,我看不到它们的响应(因为它是带有 url 参数的简单 GET)。
我怀疑我收到错误“JSON 路径键不匹配”。因为那些标签。
【问题讨论】:
标签: java json rest rest-assured