使用 Google 地图 API 的放心简单测试

Rest-assured simple test with Google Maps API

我需要使用 REST-assured 进行简单测试。这是 link 到 google 映射 API http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+Mountain+View+CA&sensor=false

我需要验证该请求的 statusCode 是否正确 (200) 和字段: 状态:"OK" 类型是 "street_address" 国家/地区是 "US"

我写了这段代码,但部分有效

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"));

检查状态代码、内容类型和正文的第一部分 (status=OK) 运行良好并通过测试,但我在最后两个正文测试中遇到问题,它们失败了,我得到:

JSON path results.types doesn't match.
Expected: street_address
Actual: [[street_address]]

响应结果中是一个数组,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"));

}