私は次のような改札クラスを持っています:
public class MyReport extends AbstractReport {
private static final long serialVersionUID = 1L;
public MyReport(PageParameters parameters) throws ParseException {
super(parameters);
try {
} catch (ParseException e) {
throw new RuntimeException("Missing from/to date");
}
}
@Override
protected void onInitialize() {
super.onInitialize();
setPageHeader();
}
protected void setPageHeader() {
add(new TaxHeader("pageHeader")); //TaxHeader extends Panel
}
protected void setPageFooter(CustomerDTO customerInfoForFooter) {
//TO BE ADDED
}
}
HTMLマークアップはこんな感じ
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<wicket:head>
<title><wicket:message key="k4.title">Title</wicket:message></title>
<meta name="author" content="abc" />
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<wicket:link>
<link rel="stylesheet" type="text/css" href="general.css" media="all" />
</wicket:link>
</wicket:head>
<BODY>
<div id="pageHeader" class="pageHeader" wicket:id="pageHeader" >HEADER</div>
<div id="pageFooter" class="pageFooter" wicket:id="pageFooter" >FOOTER</div>
</BODY>
</html>
テストクラスはこんな感じ
public class ReportTest extends WicketTestBase {
@Test
public void reportShouldRenderCorrectly() {
tester.startPage(MyReport.class, new PageParamenters());
tester.assertRenderedPage(MyReport.class);
}
}
私が望むのは、ページを作成してテストすることで、テスト駆動型になることです。setPageHeader()
つまり、メソッドをsetPageFooter()
互いに別々にテストしたいということです。何かのようなもの
@Test
public void pageHeaderShouldRenderCorrectly()
ただし、これは不可能です。ウィケットはページをロードせず、'pageFooter' ウィケット タグがコンポーネントで設定されていないと文句を言うからです。ご想像のとおり、多くの wicket 参照を含む複雑な HTML ページの場合、上記のテストを実行する前にそれらすべてが満たされていることを意味します。
これを回避する方法はありますか?TaxHeader
コンポーネント (つまり、この場合はクラス)のテストを終わらせたくないことに注意してください。私が望むのは、ウィケットのレンダリングをテストすることです。