我的登录控制器中包含以下代码,并且必须测试用户是否已登录。我将如何编写测试用例?
def index() {
if (springSecurityService.isLoggedIn()) {
redirect uri: '/'
}
else {
redirect action: 'auth', params: params
}
}
答案 0 :(得分:1)
类似这样的东西:
import grails.plugin.springsecurity.SpringSecurityService
import grails.test.mixin.TestFor
import spock.lang.Specification
@TestFor(YourController)
class YourControllerSpec extends Specification {
def springSecurityService = Mock( SpringSecurityService )
void setup() {
controller.springSecurityService = springSecurityService
}
void "test index"() {
when:
controller.index()
then:
1 * springSecurityService.isLoggedIn() >> true
response.redirectedUrl == '/'
when:
controller.response.reset()
controller.index()
then:
1 * springSecurityService.isLoggedIn() >> false
response.redirectedUrl == '/auth'
}
}
答案 1 :(得分:0)
您可以在此处(https://github.com/orubel/beapi_backend/blob/master/src/integration-test/groovy/net/nosegrind/apiframework/ApiFunctionalSpec.groovy)看到Beapi API Framework实现如何处理那里的测试。
第一个测试是测试登录(使用YML文件中的默认root登录/传递),然后保存令牌以供其他测试使用。