您使用哪些方法来对单元测试事件处理程序进行单元测试,特别是如果它们需要来自事件的信息(例如鼠标坐标或事件的目标)?最常见的做法是将行为重构为一个方法,当处理程序从事件中提取信息时,或者是否有有效的方法来模拟FlexUnit或Fluint中的事件派遣?
答案 0 :(得分:3)
我经常手动创建一个事件对象,并从正在侦听的对象中调度事件,尤其是我可以确保没有正确删除的浮动事件侦听器。偶尔我遇到的情况是我的测试类无法访问调度对象。如果是这种情况,我将业务逻辑与实际的事件监听器方法分开,保持事件监听器方法非常简单和轻量级,并测试业务逻辑。如果可以的话,从对象调度会好得多。
FlexUnit和Flunit不提供事件调度的任何“模拟”;如果你可以访问该对象,你将能够从它发送,如果你不能,FlexUnit / Flunit也不能。
但是,在使用事件时,您需要了解FlexUnit / Flunit如何提供异步单元测试的方法。调度模拟事件意味着您正在启动一个在方法完成时无法完成的操作,因此您必须创建一个异步测试。 FlexUnit的文档在他们的ASDocs中,Flunit在他们的主页上有一个很好的在线文档集:http://code.google.com/p/fluint/wiki/AsyncTest