#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<>();
Надеюсь, это поможет.