【问题标题】:How to write tests for tracking event flows in eventbus?如何编写测试以跟踪事件总线中的事件流?
【发布时间】:2014-01-10 10:22:17
【问题描述】:

详细说明: 在我们的 gwt 和 mvp4g 应用程序中,我们在 eventbus 中有相当复杂的事件流。像 LOGIN 这样的一个事件会产生多个其他事件作为演示者/处理程序的反应。目前,我们很难理解事件是如何相互关联的,即哪些事件必须遵循这个特定的事件。
我们对演示者和视图进行了测试,但我们缺乏能够清楚地显示/建模事件流的测试,最好不使用真实的视图和服务。

简短说明: 应该开发新的 eventBus(?) 测试,清楚地描述和测试事件流。

我没有什么粗鲁的想法,但听起来都不令人满意:

  1. 编写 mvp4g 事件总线的自定义实现(可能很难看)和:

    • 使用真正的演示者
    • 使用模拟(?)视图
    • 模拟服务
    • 验证所有产生的服务调用
    • 为什么不酷(a)在这种情况下,测试不会直接验证产生的事件,而只会验证那些有服务的事件。 (b) EventBus 实现看起来相当可怕 - 它必须为每个演示者创建模拟服务和视图
  2. 找到一种方法来使用一些神奇的 mvp4g 机制在测试和模拟 vies、服务中创建 eventBus。

    • 为什么不酷:与上一个相同 - 只能通过服务进行间接验证,我找不到如何手动创建 eventBus 并解决 GIN、GWT 模块间依赖关系等所有问题。我想没有简单的方法可以做到这一点。

对于在测试中跟踪事件树的问题,有什么通用的解决方案吗?我想我不是第一个关注复杂事件总线事件流的人。

【问题讨论】:

    标签: gwt event-bus mvp4g


    【解决方案1】:

    您想测试 eventBus 吗?或者你想跟踪所有被触发的事件? 如果您想跟踪您的事件,也许某种 EventMonitor 可以帮助您?一个实现所有必要的 EventHandler 并记录发生的每个事件的类。 类似的东西?只需在测试开始之前实例化该类即可。

    import java.util.logging.Logger;
    
    import com.google.gwt.event.shared.GwtEvent;
    import com.google.web.bindery.event.shared.EventBus;
    
    public class EventMonitor implements AEventHandler, BEventHandler /* , ... */{
    
        private static int event_count = 1;
    
        private final Logger logger = Logger.getLogger(this.getClass().getName());
    
        public EventMonitor(EventBus eventBus) {
            eventBus.addHandler(AEvent.getType(), this);
            eventBus.addHandler(BEvent.getType(), this);
            // [...]
        }
    
        private void logEvent(GwtEvent<?> event) {
    
            logger.info(event_count + " useful information");
            event_count++;
        }
    
        @Override
        public void onAEvent(AEvent event) {
            logEvent(event);
        }
    
        @Override
        public void onBEvent(BEvent event) {
            logEvent(event);
        }
    
    
    }
    

    【讨论】:

    • 我们谈论的是 mvp4g 事件总线,它与原生 GWT 事件总线完全不同。已经实现了对 ired 事件的记录。使用 @Debug 记录触发和消耗的事件。
    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2011-12-14
    • 2021-07-20
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    相关资源
    最近更新 更多