unit-testing - 使用 session 时出现问题,如何决定选择request.getSession(true)还是request.getSession(false)

标签 unit-testing grails

在过滤器中,我使用request.getSession(false)来获取 session ,这没关系。但是当我对其进行单元测试时,request.getSession(false)将返回null obj,并且测试结果失败。如果我想通过测试,则应使用request.getSession(true)。

最佳答案

当且仅当一个不存在的request.getSession(true)创建一个新 session 。如果已经存在,例如在生产环境中,它将使用Java EE servlet容器中可用的那个调用您的代码。

换句话说,您可以在生产环境中当前使用request.getSession(false)的任何地方使用request.getSession()(与getSession(true)相同)。在生产环境中无需执行getSession(false),如果存在,则getSession(true)将始终返回当前 session 。在测试环境中,您当然会得到一个空白 session ,然后您将需要使用该空白 session 填充运行测试所需的任何数据。但是它应该在两个地方都做正确的事情。

请注意,Grails有自己的 session 对象,该对象包装了Java EE session 对象,因此您可能希望使用它...

关于unit-testing - 使用 session 时出现问题,如何决定选择request.getSession(true)还是request.getSession(false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26599941/

相关文章:

grails - IntelliJ Grails 应用程序安装的插件不可见

grails - 访问列表中的各个元素

unit-testing - 集成在 Leksah 中的 Haskell 单元测试

reactjs - 如何使用 Jest 和 Enzyme 对包含 History.push 的 React 事件处理程序进行单元测试?

spring-boot - 如何使用spring-data-neo4j和Grails 3.3.6解决Spring bean冲突

java - 请求参数和 PUT 方法

azure - 如何保护将Azure与Oauth结合使用的Grails API?

c# - 模拟 Azure 表存储的 CloudStorageAccount 和 CloudTable

java - Android/Java 单元测试 - 如何在 java.lang.reflect.Method 中使用参数?

javascript - Mocha 测试 Promise 仍停留在流程中(已锁定)