我需要使用REST保证进行简单的测试。这是google maps API的链接 http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+Mountain+View+CA&sensor=false
我需要验证该请求的statusCode是否正确(200)和字段: 状态:“确定” 类型是“street_address” 国家是“美国”
我写了这段代码,但部分工作
public class RestTest {
@Test
public void Test1() {
RestAssured.get("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+Mountain+View+CA&sensor=false").then().
statusCode(200).
contentType(ContentType.JSON).
body("status", equalTo("OK")).
body("results.types", equalTo("street_address")).
body("results.address_components.short_name", equalTo("US"));
检查状态代码,内容类型和身体的第一部分(状态= OK)运作良好并通过测试,但我在最后两次身体测试中遇到问题,他们失败了,我得到了:
JSON path results.types doesn't match.
Expected: street_address
Actual: [[street_address]]
答案 0 :(得分:0)
在响应结果中是一个数组,address_components也是一个数组。 所以在你的json路径中你必须指定元素的索引。以下解决方案可行。
@Test
public void Test1() {
RestAssured.get("http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+Mountain+View+CA&sensor=false").then().
statusCode(200).
contentType(ContentType.JSON).
body("status", equalTo("OK")).
body("results[0].types", contains("street_address")).
body("results[0].address_components[5].short_name", equalTo("US"));
}