Как на Java в RestAssured сравнивать строки в JSON, если ответ получаем на кириллице?

У меня есть код:

public void updateItemTest() {
    UpdateItem item = new UpdateItem("3026", "Shorts", "test", "someone Shorts",
        "GREEN", 20, 1000, "dress");
    String expectedString = "Товар обновлен!";
    String response = requests.updateItem(item)
        .then()
        .assertThat().statusCode(HttpStatus.SC_OK)
        .body("result", equalTo(expectedString))
        .extract()
        .response()
        .asString();
}

Но после получения ответа на этот запрос у меня происходит ошибка в сравнении:

java.lang.AssertionError: 1 expectation failed.
JSON path result doesn't match.
Expected: Товар обновлен!
Actual: Товар обновлен!

Подскажите пожалуйста как можно это исправить?

P.S. UpdateItem состоит из:

public Response updateItem(UpdateItem item) {
    return given()
        .spec(specifications.baseRequestSpec())
        .body(gson.toJson(item))
        .put("/update");
}

А baseRequestSpec из:

public io.restassured.specification.RequestSpecification baseRequestSpec() {
    RequestSpecBuilder requestSpecBuilder = new RequestSpecBuilder();
    requestSpecBuilder.setContentType(ContentType.JSON);
    requestSpecBuilder.setBaseUri("http://shop.bugred.ru/api/items");
    return requestSpecBuilder.build();
}

Ответы (2 шт):

Автор решения: Khidik

RestAssured поддерживает сравнение строк на любом языке, включая кириллицу. Проблемы могут возникнуть, если сервер возвращает данные в неправильной кодировке. В этом случае вы можете указать кодировку вручную при обработке ответа.

Вот пример, как можно сравнить строки на кириллице в JSON с использованием RestAssured:

import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

public class Test {
    @org.junit.Test
    public void test() {
        given()
            .when()
            .get("http://example.com/api")
            .then()
            .body("key", equalTo("значение"));
    }
}

В этом примере мы запрашиваем данные с сервера по адресу http://example.com/api, а затем проверяем, что значение ключа key в возвращенном JSON равно значение.

Если сервер возвращает данные в неправильной кодировке, вы можете указать кодировку вручную следующим образом:

import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

public class Test {
    @org.junit.Test
    public void test() {
        given()
            .when()
            .get("http://example.com/api")
            .then()
            .contentType("application/json; charset=UTF-8")
            .body("key", equalTo("значение"));
    }
}

В этом примере мы указали, что ожидаем данные в формате JSON с кодировкой UTF-8.

→ Ссылка
Автор решения: Sergi

У вас файл тестового класса в кодировке, отличной от UTF-8, поэтому вы и видите кракозябры в сообщении. Исправьте кодировку файла в вашей IDE

→ Ссылка