【发布时间】:2014-03-28 07:49:16
【问题描述】:
我想对Httpsession 进行部分模拟,但为此我需要监视它而不是模拟它,而且如果没有已经模拟的请求对象,我就无法获得这个接口。
请帮忙。
换句话说,如果没有HttpServletRequest 对象,我如何获得HttpSession 的对象。
更多细节::
有一个我想测试的 servlet,servlet 有会话并将“loginBean”(包含登录的用户相关信息)放入会话中,我已经模拟并且工作正常,现在在 GUI 级别,有 2 个选项卡, DetailSet1 , detailsSet2 ,当你输入 DetailSet1 的数据时,它会保存在 session 中并执行一些业务逻辑,现在谈到 DetailsSet2 ,你已经在 session 中有 DetailSet1 ,所以它得到了它需要的一切,数据保存在 DB 中。不,很明显我必须模拟 HttpSession 因为我从容器外部运行单元案例,但是存储的数据也在 Httpsession 中,如果我也模拟这些,它就违背了测试的目的。回到我开始的时候,我需要Httpsession 对象来返回我已经模拟的模拟数据,并且在其他情况下它应该像任何普通的HttpSession 对象一样。就像,如果我做 session.setAttribute("name","Vivek) ,那么 session.getAttribute("name") 应该在那之后 return "Vivek" ,但是在模拟对象的情况下它返回 null 为什么?因为我没有模拟 @ 的行为987654331@。如果我仍然无法让任何人理解我的要求,我真的很抱歉。
简而言之,对HttpSession 进行部分模拟。
【问题讨论】:
-
再描述一下您的用例。你到底想达到什么目标?
-
我想部分模拟 HttpSession。
-
正如我所说,描述您的用例 - 不是您在技术上想要做什么,而是您想要实现。你在测试吗?您的问题的更大背景是什么?
-
已更改原帖,请重读。
标签: java unit-testing mockito