我想测试一个过滤器来验证会话是否有效,但我不知道该怎么做。
我的过滤器是这样的。
class SampleFilters {
def filters = {
sessionFilter(controller:'*', action:'*') {
before = {
if(request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
//doSomething
}
}
}
}
}
我想为此过滤器创建单元测试。我想要的是在运行测试时应该输入“if”子句来执行“doSomething”。目前,我有这样的事情。
import grails.test.mixin.*
import grails.test.mixin.web.FiltersUnitTestMixin;
import org.junit.*;
@TestMixin(FiltersUnitTestMixin)
class SessionFiltersTests {
def controller
@Test
void testFilter() {
controller = mockController(TestController)
//I want to make sure when running the test it will enter the "if" clause
withFilters(action: "testAction") { controller.testAction() }
assert response.text
}
}
我仍然是单元测试的新手,所以如果有人可以帮助我,我会很感激。
谢谢!
答案 0 :(得分:0)
我找到了一种方法来做到这一点。我不知道这是不是最好的选择,但我已经没有想法了。这就是我离开它的方式:
import grails.test.mixin.*
import grails.test.mixin.web.FiltersUnitTestMixin;
import org.junit.*;
@TestMixin(FiltersUnitTestMixin)
class SessionFiltersTests {
def controller
@Test
void testFilter() {
controller = mockController(TestController)
// Simulate session timeout
controller.request.requestedSessionId = 1
controller.request.requestedSessionIdValid = false
withFilters(action: "test") { controller.test() }
// Add your asserts
}
}