Как передать параметры запроса в вызове Get с уверенностью, используя шаги сценария cucumber

#java #cucumber #rest-assured

#java #cucumber #будьте уверены

Вопрос:

Я изучаю rest-assured (Java) с фреймворком на основе cucumber. Существует метод, написанный для обработки параметров запроса, он ожидает отображение <String,?>, как показано ниже-

 protected Response **getByQueryParams**(final String url, Map<String, ?> queryParams) {
        setRootApiUrl();
        return given()
                .queryParams(queryParams)
                .contentType(ContentType.JSON)
                .accept(ContentType.JSON).get(url)
                .thenReturn();
    }
  

Мой запрос на получение. Конечная точка: ** http://localHost:8088/state-names?countryCode=IND**

У меня есть шаг cucumber для того же, что и ниже-

    Given I perform Get operation for "/state-names" with below query params
    |countryCode|
    |IND        |
  

Мой пошаговый код определения: использование приведенного выше метода (getByQueryParams)>

 @Given("I perform Get operation for {string} with below query params")
    public void getAllStatesWithCountryCode(String uri,Map<String,String> table) {
        var queryParMap=new HashMap<>();

        for (Map.Entry<String, String> data : table.entrySet()) {
            queryParMap.put(data.getKey(),data.getValue()); 
        }
        response = getByQueryParams(uri,queryParMap);

    }
  

это выдает тип, требующий ошибки: Map<String,?>
Предоставлено: HashMap<Объект, объект>

Ошибка кажется очевидной, но я не настолько хорош в Java, поэтому не могу понять, как использовать этот метод с определенной Map<String,?> в моем сценарии, избегая вышеуказанной ошибки. Пожалуйста, помогите.

Комментарии:

1. Спасибо, что приняли его как ответ, но я думаю, вам следует подумать об изменении вопроса / описания, поскольку здесь формулировка проблемы — это что-то другое.

Ответ №1:

Ваш метод-getByQueryParams(конечный строковый url, Map<String, ?> queryParams), кажется, подходит, поскольку он предназначен для хранения любого общего типа значения для строкового ключа. Я не уверен в том, как ваш FW формирует URL-адрес API конечной точки.

Но эта ошибка должна быть устранена путем объявления вашей локальной карты типа <String, String> вместо использования default- Map<> т.е. Map<Obj, Obj> . Я смог исправить это с помощью любого из приведенных ниже:

var queryParMap = new HashMap<Строка, строка>(); или Map<Строка, строка> queryparm = new HashMap<>();

Надеюсь, это поможет.