如何使用AbstractAjaxTimerBehavior对Wicket组件进行单元测试?
问题描述:
我有一个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);
答
由于计时器的行为本身不会触发如在浏览器中,你将不得不使用自己executeBehavior(AbstractAjaxBehavior)。
if (!timerBehavior.isStopped())
wicketTester.executeBehavior(timerBehavior);
只是看看的executeAllTimerBehaviors(MarkupContainer)
代码。请注意,此方法仅适用于AjaxSelfUpdatingTimerBehavior
。