Session 在Grails中使过滤器单元测试的会话无效

Session 在Grails中使过滤器单元测试的会话无效,session,testing,grails,filter,invalidation,Session,Testing,Grails,Filter,Invalidation,我想测试一个过滤器,验证会话是否有效,但我不确定如何做 我的过滤器是这样的 class SampleFilters { def filters = { sessionFilter(controller:'*', action:'*') { before = { if(request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {

我想测试一个过滤器,验证会话是否有效,但我不确定如何做

我的过滤器是这样的

class SampleFilters {
  def filters = {
    sessionFilter(controller:'*', action:'*') {
        before = {
            if(request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
                //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
  } 
}
我想为这个过滤器创建一个单元测试。我想要的是,当运行测试时,它应该输入“if”子句来执行“doSomething”。目前,我有类似的东西

class SampleFilters {
  def filters = {
    sessionFilter(controller:'*', action:'*') {
        before = {
            if(request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
                //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
  } 
}
我仍然是单元测试的新手,所以如果有人能帮助我,我将不胜感激


谢谢

我找到了这样做的方法。我不知道这是不是最好的选择,但我已经没有主意了。我就是这样离开的:

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
  }
}