我有以下Wicket页面提供PDF:
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,因为我只能在这种情况下调用构造函数?
提前致谢
答案 0 :(得分:2)
我建议您使用已安装的资源,而不是使用提供二进制数据的页面(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()
获取byte[]
并断言其内容。
2)在非成功案例中,只需使用tester.assertRenderedPage(ErrorPage.class)