2011-02-04 63 views
2

我有一个Wicket面板,它有AbstractAjaxTimeBehavior,我想单元测试。在单元测试期间,如何触发ajax事件,最终调用AbstractAjaxTimeBehavior.onTimer(AjaxRequestTarget target)方法?如何使用AbstractAjaxTimerBehavior对Wicket组件进行单元测试?

behavior = new AbstractAjaxTimerBehavior(Duration.seconds(pollingPeriodInSeconds)) { 
    protected void onTimer(AjaxRequestTarget target) { 
    // how to unit test this? 
    } 
} 
add(behavior); 

回答

3

由于计时器的行为本身不会触发如在浏览器中,你将不得不使用自己executeBehavior(AbstractAjaxBehavior)

if (!timerBehavior.isStopped()) 
    wicketTester.executeBehavior(timerBehavior); 

只是看看的executeAllTimerBehaviors(MarkupContainer)代码。请注意,此方法仅适用于AjaxSelfUpdatingTimerBehavior

相关问题