session - 使 Grails 中过滤单元测试的 session 无效

标签 session testing grails filter invalidation

我想测试一个过滤器来验证 session 是否有效,但我不确定该怎么做。

我的过滤器是这样的。

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

我仍然是单元测试的新手,所以如果有人能帮助我,我将不胜感激。

谢谢!

最佳答案

我找到了一种方法来做到这一点。我不知道这是否是最好的选择,但我已经失去了想法。这是我离开它的方式:

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

关于session - 使 Grails 中过滤单元测试的 session 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14856426/

相关文章:

grails - 如何从log4j中删除详细信息

node.js - 如何从请求中获取 sessionId?

java - Play Framework : Store connections after onStart?

node.js - NodeJS 快速 session req.session 未定义

file - 如何检查文件是否存在于 makefile 中

Grails 测试集成服务注入(inject)

php - Symfony 3 SessionHandler 警告

django - 如何从 bash 测试 postgresql 凭据?

html - 何时在 Grails 中编码为 HTML

arrays - 在Groovy脚本上查看SQL保存