【问题标题】:await all JDA RestActions等待所有 JDA RestActions
【发布时间】:2020-02-08 15:28:18
【问题描述】:

我想为 JDA Discord Bots 创建一个(功能)测试系统。

为此,我需要等到当前队列中的所有消息都发送完毕(使用RestAction#queue发送消息)并测试是否有消息。

有没有办法等待所有排队的RestActions 或者我应该以指数方式等待(例如等待 0.5 秒、等待 1 秒、等待 2 秒并测试消息是否存在)

[注意] 我不想在我的生产代码中将queue 更改为submit 并将其发送到测试。

【问题讨论】:

    标签: java testing junit discord discord-jda


    【解决方案1】:

    理想情况下,测试系统根本不应该与互联网交互。但是,要回答您的问题,您可以使用 submit 返回的承诺而不是使用队列来等待休息操作。

    List<CompletableFuture<?>> list = new ArrayList<>();
    
    list.add(action1.submit());
    list.add(action2.submit());
    ...
    
    CompletableFuture<Void> merged = CompletableFuture.allOf(list.toArray(new CompletableFuture[0]));
    
    merged.whenComplete((v, error) -> {
        if (error != null) error.printStackTrace();
        else System.out.println("All futures completed successfully");
    });
    

    【讨论】:

    • 问题是我无法访问将按钮/提交的 Future 排队的方法。
    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2021-11-03
    • 2016-11-05
    • 2018-09-22
    • 2020-11-21
    • 2014-03-12
    相关资源
    最近更新 更多