2015-08-17 72 views
1

有没有方法可以单元测试Spring Security提供的authorize tag的使用? MockMvc integration做得不够好,因为我似乎只能检查转发的/重定向的URL,而不检查URL的内容。单元测试“授权”Spring Security JSP taglib

我正在做的工作涉及编写自定义SpEL表达式,并且检查它们在真正的sec:authorize用法上工作会很棒!现在我只限于测试,对这些表述基本呼叫的JSP页面(特别是使用access属性在intercept-url元素)

回答

1

不幸的范围之外的工作,JSP页面不工作,因为在单元测试他们需要由servlet容器编译。我会推荐使用没有容器的东西(即Thymeleaf),因为您可以在这些情况下轻松呈现响应。

如果您使用的技术可以在容器外渲染,那么您可以利用Spring Framework 4.2+中的HtmlUnit MockMvc integration。如果您使用的是旧版本的Spring Framework并且无法升级,则可以使用Spring Test HtmlUnit

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

如果你真的必须使用JSP,它可能会有点痛苦。但是,有一个pretty decent github project列出了一些单元测试JSP的机制。在选项JspTest似乎最有前途(但仍相当过时)。

如果您觉得雄心勃勃,那么看看您是否可以使用Jasper(Tomcat的JSP编译器)提供与MockMvc一起工作的钩子将会非常有趣。