我正在使用 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 请求,并将集合作为参数传递?