如何模拟Wicket组件

时间:2016-09-02 07:52:08

标签: java unit-testing mockito wicket spock

我试图在WicketTester和Spock / Mockito的帮助下对wicket小组进行单元测试。

在此面板中,在良好的案例场景中显示ModalWindow(确认对话框)。

我想验证此对话框是否会显示,因此我尝试模拟该组件,将其注入面板并测试是否调用了show方法。 这不会起作用,因为Wicket会抛出以下错误:

java.lang.IllegalStateException: org.apache.wicket.Component has not been properly detached. 
Something in the hierarchy of X has not called super.onDetach() in the override of onDetach() method

毫不奇怪模拟不能在它的超类上调用onDetach方法。

我尝试对ModalWindow进行存根并使用间谍来验证是否调用了show方法,但该方法的实现具有难以模拟的依赖性/外部调用。

我应该以哪种方式解决这个问题?或者我甚至不应该尝试进行这种测试工作?

1 个答案:

答案 0 :(得分:0)

我创建了一个自定义版本的ModalWindow,它只是覆盖#show()方法来调用super.show()并引发一个调用该方法的标志。 然后在面板测试中使用此自定义版本。