首页 > 解决方案 > 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

有谁知道它为什么会发生以及它是如何解决的?先感谢您。

标签: unit-testinggrailsspring-securityspock

解决方案


推荐阅读