Java 如何JUnit测试Wicket页面
我有以下Wicket页面,提供PDF格式:Java 如何JUnit测试Wicket页面,java,spring,testing,junit,wicket,Java,Spring,Testing,Junit,Wicket,我有以下Wicket页面,提供PDF格式: public class TestPage extends WebPage { public TestPage(PageParameters pageParameters) { String param1 = pageParameters.get("test").toString(); String param2 = pageParameters.get("test1").toString();
public class TestPage extends WebPage {
public TestPage(PageParameters pageParameters) {
String param1 = pageParameters.get("test").toString();
String param2 = pageParameters.get("test1").toString();
[..]
try {
byte[] generatedPDF= generatePDF(param1, param2, pdfGenerationOptions);
RequestCycle requestCycle = RequestCycle.get();
HttpServletRequest request = (HttpServletRequest) requestCycle.getRequest().getContainerRequest();
requestCycle.replaceAllRequestHandlers(new ResourceRequestHandler(new PDFResource("test.pdf", request.getHeader(USER_AGENT), true), null));
} catch (PdfGenerationException | IOException e) {
LOGGER.error("error", e);
new PageProvider(ErrorPage.class);
}
}
@Override
public void renderPage() {
// left blank
}
}
既然在这种情况下我只能调用构造函数,那么如何测试页面是否返回字节数组(pdf)或ErrorPage.class
提前感谢我建议您使用已装载的资源,而不是提供二进制数据(pdf)的页面 关于测试: 要测试页面,请执行以下操作:
WicketTester tester = new WicketTester();
PageParameters parameters = new PageParameters();
parameters.set("test", "TEST");
parameters.set("test1", "TEST1");
tester.startPage(TestPage.class, parameters);
// tester.startResourceReference(TestResRef.class, parameters);
1) 在成功的情况下,使用tester.getResponse().getBinaryContent()
获取字节[]
并断言其内容
2) 在不成功的情况下,只需使用
tester.assertrenderpage(ErrorPage.class)
一些建议。你在构造器中做的事情太多了,它应该保持简单。