使用 Apache Wicket 设置组件测试页面
Set a Page for Component Testing with Apache Wicket
我正在测试我的 wicket 7 应用程序中的一些组件。
我的组件没什么特别的,但它继承自
public PageAwarePanel extends Panel {
@Override
protected void onInitialize() {
super.onInitialize();
//refuse if used on page without PageConfig
if (getPageConfigurationModel() == null){
throw new RuntimeException("this component is only allowed inside pages having PageConfigurationModel");
}
}
protected IModel<PageConfiguration> getPageConfigurationModel(){
if (getPage() instanceof TemplatePage){
return ((TemplatePage)getPage()).getPageConfigurationModel();
}
return null;
}
}
有了这个我可以从某个面板访问一些配置。
现在当我尝试测试时:
PositionsPanel p = new PositionsPanel("123", asmNumber, Model.of());
tester.startPage(MyPage.class);
tester.startComponentInPage(p);
其中 MyPage 是一个 TemplatePage。
我得到定义的 RuntimeException。我的问题是:
如何通过定义应在哪个页面上呈现来测试此组件?
感谢所有先进的帮助。
tester.startPage(MyPage.class);
tester.startComponentInPage(p);
这两个没有关系。这就像在浏览器中浏览两个不同的页面。
最好的方法是为满足要求的测试创建一个页面,将面板添加到该页面并执行tester.startPage(TestPage.class)
。
另一种方法是覆盖 org.apache.wicket.util.tester.BaseWicketTester#createPage()
和 return MyPage
的实例。这样你仍然可以使用 startComponentInPage()
但除此之外它与第一种方法基本相同。
我正在测试我的 wicket 7 应用程序中的一些组件。
我的组件没什么特别的,但它继承自
public PageAwarePanel extends Panel {
@Override
protected void onInitialize() {
super.onInitialize();
//refuse if used on page without PageConfig
if (getPageConfigurationModel() == null){
throw new RuntimeException("this component is only allowed inside pages having PageConfigurationModel");
}
}
protected IModel<PageConfiguration> getPageConfigurationModel(){
if (getPage() instanceof TemplatePage){
return ((TemplatePage)getPage()).getPageConfigurationModel();
}
return null;
}
}
有了这个我可以从某个面板访问一些配置。
现在当我尝试测试时:
PositionsPanel p = new PositionsPanel("123", asmNumber, Model.of());
tester.startPage(MyPage.class);
tester.startComponentInPage(p);
其中 MyPage 是一个 TemplatePage。
我得到定义的 RuntimeException。我的问题是:
如何通过定义应在哪个页面上呈现来测试此组件?
感谢所有先进的帮助。
tester.startPage(MyPage.class);
tester.startComponentInPage(p);
这两个没有关系。这就像在浏览器中浏览两个不同的页面。
最好的方法是为满足要求的测试创建一个页面,将面板添加到该页面并执行tester.startPage(TestPage.class)
。
另一种方法是覆盖 org.apache.wicket.util.tester.BaseWicketTester#createPage()
和 return MyPage
的实例。这样你仍然可以使用 startComponentInPage()
但除此之外它与第一种方法基本相同。