我试图在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
方法,但该方法的实现具有难以模拟的依赖性/外部调用。
我应该以哪种方式解决这个问题?或者我甚至不应该尝试进行这种测试工作?
答案 0 :(得分:0)
我创建了一个自定义版本的ModalWindow,它只是覆盖#show()方法来调用super.show()并引发一个调用该方法的标志。 然后在面板测试中使用此自定义版本。