Нужна помощь в REST ASSURED

Я начинаю с REST Assured, получая ошибку при выполнении кода ниже:

Код 1-

 RestAssured.expect().statusCode(200).
        body(
              "name", equalTo("Russia")
                ).
            when().
                get("http://restcountries.eu/rest/v1/callingcode/7");

Исключение-

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method equalTo(String) is undefined for the type

Код 2 –

    RestAssured.expect().statusCode(200).
        body(
              "name", Matchers.equalTo("Russia")
                ).
            when().
                get("http://restcountries.eu/rest/v1/callingcode/7");

Исключение-

Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: com.jayway.restassured.internal.ContentParser.parse() is applicable for argument types: (com.jayway.restassured.internal.RestAssuredResponseImpl, com.jayway.restassured.internal.ResponseParserRegistrar, com.jayway.restassured.config.RestAssuredConfig, java.lang.Boolean) values: [com.jayway.restassured.internal.RestAssuredResponseImpl@753455ab, ...] Possible solutions: wait(), any(), grep()

Ниже приведены только 2 метода в моем классе, у меня проблема с первым, второй работает нормально. Пожалуйста, дайте мне знать, что мне не хватает в первом методе.

Метод -1

public static void testCountriesCallingCode() {     
    RestAssured.expect().statusCode(200).
        body(
              "name", equalTo("Russia")
                ).
            when().
                get("http://restcountries.eu/rest/v1/callingcode/7");
    System.out.println(RestAssured.get("http://restcountries.eu/rest/v1/callingcode/7").asString());
}

Метод 2

public static void testCountriesCallingCodeUsingJSONPATH(){
    Response res = RestAssured.get("http://restcountries.eu/rest/v1/callingcode/7");
    System.out.println(res.getStatusCode());
    String json = res.asString();
    JsonPath jp = new JsonPath(json);
    System.out.println(jp.get("name"));
}

person user3121600    schedule 17.11.2014    source источник
comment
Не могли бы вы поделиться дополнительным кодом, чтобы мы могли узнать больше о контексте этого?   -  person spg    schedule 17.11.2014
comment
Я предоставил полный код, который я использую, пожалуйста, дайте мне знать, что мне не хватает.   -  person user3121600    schedule 21.11.2014


Ответы (6)


Спасибо, Хти, твой ответ сработал. Без других зависимостей Rest Assured работает. Я понятия не имею, почему веб-сайт Rest Assured не отмечает этого. Следование в pom.xml сработало

<properties>
    <rest-assured.version>3.0.2</rest-assured.version>
    <resteasy.version>3.0.17.Final</resteasy.version>
</properties>
...
<!-- Jackson is for allowing you to convert pojo (plain old Java object) into JSON -->
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson-provider</artifactId>
    <version>${resteasy.version}</version>
</dependency>

<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>${rest-assured.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-path</artifactId>
    <version>${rest-assured.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>xml-path</artifactId>
    <version>${rest-assured.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-xml</artifactId>
    <version>2.4.11</version>
    <scope>test</scope>
</dependency>
person Mr. Mundkowsky    schedule 03.05.2017

Измените тело вашего первого примера на:

body(
      "[0].name", equalTo("Russia")
    )

Это связано с тем, что ответ JSON от сервера представляет собой не объект, а массив, и вам нужно запросить первый объект ([0]), а затем имя (.name).

person spg    schedule 21.11.2014
comment
Я получаю ошибку времени компиляции - метод equalTo (String) не определен для типа - person user3121600; 24.11.2014
comment
Вы должны добавить import static org.hamcrest.Matchers.equalTo; чуть выше вашего класса - person spg; 24.11.2014
comment
Я уже пробовал приведенный ниже код, но получил исключение, как указано для кода 2 выше в моем сообщении. ' импортировать org.hamcrest.Matchers; public void testCountriesCallingCode() { RestAssured.expect().statusCode(200). body([0].name, Matchers.equalTo(Афганистан)). когда(). get(restcountries.eu/rest/v1/all); }' - person user3121600; 24.11.2014

Для кода-1 для метода equalTo() необходимо импортировать org.hamcrest.Matchers.*;

Для исключения в коде 2 очень сложно упомянуть, не глядя на ОТВЕТ, но попробуйте перейти по ссылке ниже, если в вашем ответе есть вложенные общие параметры.

Как проверить вложенный ответ с помощью REST Assured?

Пожалуйста, дайте мне знать, если у вас есть какие-либо проблемы или вопросы. Спасибо!

person OverrockSTAR    schedule 12.04.2015

Несмотря на то, что этот вопрос старый, я только что наткнулся на вторую проблему:

Исключение в потоке «основной» groovy.lang.MissingMethodException: нет подписи метода: com.jayway.restassured.internal.ContentParser.parse() применимо для типов аргументов: (com.jayway.restassured.internal.RestAssuredResponseImpl, com.jayway .restassured.internal.ResponseParserRegistrar, com.jayway.restassured.config.RestAssuredConfig, java.lang.Boolean) значения: [com.jayway.restassured.internal.RestAssuredResponseImpl@753455ab, ...] Возможные решения: ожидание(), любое (), грэп()

Это связано с отсутствием зависимостей. В моем случае мне нужно было добавить зависимости для xml-path и groovy-xml, хотя я просто работаю с данными JSON. Поэтому лучше всего разрешать зависимости транзитивно.

person hli    schedule 27.10.2016

equalTo происходит от Hamcrest, который является зависимостью JUnit, содержащейся в банке JUnit. Вероятно, вам просто нужно импортировать для него статический метод из Hamcrest.

import static org.hamcrest.core.IsEqual.*;
person Sodium    schedule 05.03.2019

Добавьте статический пакет для равного:

import static org.hamcrest.Matchers.*;
person Kedar Kuchekar    schedule 30.04.2020