java - 如何 JUnit 测试 Wicket 页面

标签 java spring testing junit wicket

我有以下提供 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,因为在这种情况下我只能调用构造函数?

提前致谢

最佳答案

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

关于java - 如何 JUnit 测试 Wicket 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48552059/

相关文章:

java - web.xml 中 JspServlet 中 <init-param>mappedfile</init-param> 的用途是什么?

spring - 带有Gradle的Apache Tiles在 Spring 启动中不起作用

java - 通过 ssl 作为匿名用户进行 Active Directory 身份验证

java - 使用 Java 的多个 Selenium 参数化 Web 测试

银光用户界面测试

java - IntelliJ CheckerFramework 插件

java - 如何使用 BouncyCaSTLe 计算消息摘要?

ruby - 需要使用 Capybara/RSpec 计算字符串中的电子邮件数量

java - 覆盖 Arrays.toString() 方法

java - SpringBeanAutowiringInterceptor - 配置为按名称而不是按类型 Autowiring ?