单元测试 "authorize" Spring 安全性 JSP taglib

Unit testing "authorize" Spring Security JSP taglib

有没有办法对 authorize tag provided by Spring Security? The MockMvc integration 的使用进行单元测试还不够,因为我似乎只能检查 forwarded/redirected URL 但是不是 URL.

的内容

我正在做的工作涉及编写自定义 SpEL 表达式,如果能检查它们是否适用于真实的 sec:authorize 用法,那就太好了!现在我仅限于测试对这些表达式的基本调用是否在 JSP 页面的范围之外工作(特别是使用 intercept-url 元素中的 access 属性)

不幸的是,JSPs 在单元测试中不起作用,因为它们需要由 servlet 容器编译。我建议使用无需容器即可工作的东西(即 Thymeleaf),因为您可以在这些情况下轻松呈现您的响应。

如果您使用可以在容器外部呈现的技术,那么您可以利用 HtmlUnit MockMvc integration found in Spring Framework 4.2+. If you are on an older version of Spring Framework and cannot upgrade, you can use Spring Test HtmlUnit

注意 Spring Test HtmlUnit 现在仅作为 Spring Framework 4.2+ 的一部分进行维护,而不是作为一个独立的项目进行维护。

如果您真的必须使用 JSPs,可能会有些痛苦。然而,有一个 pretty decent github project that lists some mechanisms for unit testing JSPs. Out of the options JspTest 似乎是最有前途的(但仍然很过时)。

如果您有雄心壮志,那么看看您是否可以提供一个 Jasper(Tomcat 的 JSP 编译器)与 MockMvc 一起工作的钩子会很有趣。