如何JUnit测试Wicket页面

时间:2018-01-31 21:53:38

标签: 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();
        [..]
        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,因为我只能在这种情况下调用构造函数?

提前致谢

1 个答案:

答案 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)