【问题标题】:How to JUnit Test a Wicket Page如何对 Wicket 页面进行 JUnit 测试
【发布时间】:2018-01-31 21:53:37
【问题描述】:

我有以下提供 PDF 的 Wicket 页面:

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?

提前致谢

【问题讨论】:

  • 一些建议。您在构造函数中做了太多事情,应该保持简单。

标签: java spring testing junit wicket


【解决方案1】:

我建议您使用已装载的资源,而不是提供二进制数据 (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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-23
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多