以下是我的beforeInterceptor
def beforeInterceptor = {
log.debug "============${actionName}=========="
if (!(actionName in ['search'])) {
redirect controller: 'error', action: 'denied'
return false
}
}
我不知道如何编写beforeInterceptor
的测试。我用google搜索但没有运气。我有tried
自己编写测试用例但无法在beforeInterceptor中获取actionName
。
when:
controller.beforeInterceptor()
或
when:
controller.beforeInterceptor.call()
controller.history(ticket)
每次我在actionName
中都为空。
有人有任何想法:如何编写beforeInterceptor的测试用例(integration
或unit
)?
答案 0 :(得分:1)
我为此创建了单元测试,我们可以在那里设置动作名称。我直接调用了beforeInterceptor,如:
@TestFor(PersonController)
@Mock([Person])
class PersonControllerSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test beforeInterceptor"() {
when:
webRequest.actionName = "index"
controller.beforeInterceptor()
then:
controller.response.redirectedUrl == '/error/denied'
when:
controller.response.reset()
webRequest.actionName = "search"
controller.beforeInterceptor()
then:
controller.response.redirectedUrl != '/error/denied'
}
}
答案 1 :(得分:0)
Grails在调用时不会调用拦截器或servlet过滤器 集成测试期间的操作。你应该测试拦截器和 隔离过滤器,必要时使用功能测试。