详细说明: 在我们的gwt with mvp4g app中,我们在eventbus中有非常复杂的事件流。作为演示者/处理者的反应,像LOGIN这样的一个事件会产生多个其他事件。目前,我们在理解事件如何相互关联,即哪些事件必须遵循这一特定事件方面遇到很大困难 我们对演示者和视图进行了测试,但是我们缺乏能够清楚地显示/模拟事件流的测试,最好不使用真实的视图和服务。
简短描述: 应该开发关于eventBus(?)的新测试,它应该清楚地描述和测试事件流。
我的想法很少,但听起来都不尽如人意:
编写mvp4g eventbus的自定义实现(可能很难看),并且:
找到一种方法来使用一些神奇的mvp4g机制在test和mock vies,services中创建eventBus。
在测试中跟踪事件树的问题是否有任何通用解决方案?猜猜我不是第一个盯着复杂的事件总线事件流的人。
答案 0 :(得分:0)
您想测试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);
}
}