2016-12-13 7 views
0

Мне нужно сделать простой тест, используя REST-assured. Это ссылка на Google Maps API http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway+Mountain+View+CA&sensor=falseПростой тест с гарантией Google Maps API

и мне нужно, чтобы убедиться, что StatusCode для этого запроса является правильным (200) и поля: статус: «OK» тип «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

В результатах ответа массив, а 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")); 

}

+0

Вам нужно добавить индекс элемента в "теле ("[0] .types", содержит ("street_address")). тоже выглядит так: «body (« results [0] .types [0] », содержит (« street_address »)). После этого он работает отлично. Большое спасибо за помощь. – cbronson1

 Смежные вопросы

  • Нет связанных вопросов^_^