Я использую инструмент Awaitility, и мне нужно вернуть коллекцию из await, чтобы иметь возможность работать с ней позже.
Мне возвращена коллекция из вызова GET:
Collection collection = usersService.getAllUsers();
Следующий код работает (вызов GET выполняется до 5 раз для выполнения условий):
waitForEvent(() -> usersService.getAllUsers()).size());
Где:
private void waitForEvent(Callable<Integer> collectionSize) {
await().atMost(5, TimeUnit.SECONDS)
.pollDelay(1, TimeUnit.SECONDS).until(collectionSize, greaterThan(5));
}
Но мне нужно передать коллекцию(не его размер), чтобы иметь возможность использовать его повторно.Почему этот код не работает (вызов GET выполняется только один раз и ждет 5 секунд)?
waitForEvent2(usersService.getAllUsers());
Где
private Collection waitForEvent2(Collection collection) {
await().atMost(5, TimeUnit.SECONDS)
.pollDelay(1, TimeUnit.SECONDS).until(collectionSize(collection), greaterThan(5));
return collection;
}
private Callable<Integer> collectionSize(Collection collection) {
return new Callable<Integer>() {
public Integer call() throws Exception {
return collection.size(); // The condition supplier part
}
};
}
Что мне нужно сделать, чтобы GET-запрос был опрошен несколько раз с передачей коллекции в качестве параметра?