unit-testing - Spock 测试 SpringSecurity 方法
问题描述
我正在尝试使用 Grails 中的 Spock 测试 SpringSecurity 的 LoginController(使用 spring-test 版本 3.1.0.RELEASE)。具体来说,我正在尝试对以下方法进行单元测试:
def index() {
if (springSecurityService.isLoggedIn()) {
redirect uri: SpringSecurityUtils.securityConfig.successHandler.defaultTargetUrl
}
else {
redirect action: 'auth', params: params
}
}
我尝试过使用以下测试:
void "Calling index"(){
given:
controller.springSecurityService = Mock(SpringSecurityService)
when:
controller.index()
then:
1 * controller.springSecurityService.isLoggedIn() >> false
response.redirectedUrl == '/login/auth'
when:
controller.response.reset()
controller.index()
then:
1 * controller.springSecurityService.isLoggedIn() >> true
response.redirectedUrl == '/login'
}
当我运行它时,我收到以下错误:
java.lang.RuntimeException: java.lang.ClassNotFoundException: DefaultSecurityConfig
有谁知道它为什么会发生以及它是如何解决的?先感谢您。
解决方案
推荐阅读
- reactjs - Ag-Grid 自定义过滤器是否过滤器不触发?
- windows - powershell 将数组传递给另一个函数
- c++ - C++ std::scoped_lock:如果锁阻塞会发生什么?
- html - wxpython - 使用 treectrl 将本地 html 文件加载到面板中
- greenplum - gpload - 一致的互连超时
- python - 如何处理 boost::python 中的类向量
- rest - 如何定义哈希图
> 在招摇 yaml - changelog - 在重写 Debian 软件包后,您通常如何做软件包名称或更改日志?
- spring - 兼容 Spring Boot 2.5.5 的 Spring Cloud 版本
- tmux - tmuxinator 仅正确运行第一个窗格的命令