spring - 如何在单元测试中使用session?

标签 spring unit-testing jakarta-ee jsf-2 junit

我有一个 spring 服务方法,它获取存储在 session 中的对象(使用 FacesContext),如下所示:

(MyObject)((HttpServletRequest) FacesContext
                .getCurrentInstance().getExternalContext().getRequest())
                .getSession().getAttribute("myObject");

我想在调用该方法之前将该对象放入单元测试的 session 中。

所以我尝试了这篇文章中的解决方案:

Spring Test session scope bean using Junit

在我的测试方法中,我在调用服务之前将对象放入 session 中,但是在尝试从 session 中获取对象时服务抛出异常,我猜这是因为 facescontext 不可用,你该怎么办认为?

我正在使用SpringJunit、JSF2,请指教,谢谢。

最佳答案

使用 Spring 3.2,这变得更加容易

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(...)
@WebAppConfiguration
public class SessionTest {

    @Autowired
    MockHttpSession session;


    @Test
    public void sessionAttributeTest() throws Exception {

        MyObject myObject = session.getAttribute("myObject");
        ...

    }
}

更多信息:Request and Session Scoped Beans

关于spring - 如何在单元测试中使用session?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519497/

相关文章:

spring - 在使用Spring AOP的项目中使用用AspectJ编写的方面

java - Spring @PropertySource,如何读取不在类路径上,而是在WEB-INF下的文件

java - Spring MVC 缺少静态资源

unit-testing - 如何构建大量单元测试?

java - JSP - 重定向同时保留请求属性

java - 一个对等点如何找到另一个对等点?

java - 如何启用 Swagger UI? Tomcat、SpringMVC、REST

django - 为 Django 测试加载固定装置

unit-testing - Selenium 批判

java - 元素类型 "Host"必须由匹配的结束标记 "</Host>"终止