Почему при выполнении одной проверки тест пройден, а другой выдаёт ошибку org.opentest4j.AssertionFailedError: expected: but was:

Скрин 2 1. Когда я перебираю список avatars с ids - тест считается пройденным. 2. Но если перебираю другие списки - выдаёт ошибку

org.opentest4j.AssertionFailedError: expected: <true> but was: <false>

Код

import io.restassured.http.ContentType;
import io.restassured.internal.common.assertion.Assertion;
import io.restassured.path.json.JsonPath;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.io.File;
import java.util.List;
import java.util.stream.Collectors;

import static io.restassured.RestAssured.when;
import static io.restassured.RestAssured.given;


public class ReqresTest {
    private final static String URL = "https://reqres.in/";

    @Test
    public void checkAvatarAndIdTest(){
        List<UserData>users = given()
                .when()
                .contentType(ContentType.JSON)
                .get(URL + "api/users?page=2")
                .then().log().all()
                .extract().body().jsonPath().getList("data", UserData.class);

      //  users.forEach(x-> Assertions.assertTrue(x.getAvatar().contains(x.getId().toString())));
       // Assertions.assertTrue(users.stream().allMatch(x->x.getEmail().endsWith("reqres.in")));

        List<String> avatars = users.stream().map(UserData::getAvatar).toList();
        List<String> ids = users.stream().map(x -> x.getId().toString()).toList();
        List<String> emails = users.stream().map(UserData::getEmail).toList();
        List<String> fns = users.stream().map(UserData::getFirst_name).toList();

       /* for(int i = 0; i < avatars.size(); i++){
            Assertions.assertTrue(avatars.get(i).contains(ids.get(i)));
        }*/

        for(int i = 0; i < fns.size(); i++){
            Assertions.assertTrue(fns.get(i).contains(ids.get(i)));
        }
    }
}

Подробная ошибка


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

Автор решения: Roman-Stop RU aggression in UA

Рассмотрим для примера fns. В этот список вы поместили имена пользователей этим кодом:

List<String> fns = users.stream().map(UserData::getFirst_name).toList();

А проверка fns.get(i).contains(ids.get(i)) проверяет, что в имени пользователя с индексом i (т.е. в fns.get(i)) содержится его идентификатор (ids.get(i)) как подстрока (contains тут - это метод у класса String). Не знаю, что именно хранится в идентификаторах пользователей, но скорее всего не first name пользователя.

Не ясно что собой представляет поле аватар, но очевидно, в строке, которую возвращает getAvatar содержится идентификатор пользователя, как подстрока.

→ Ссылка