我目前正在尝试在GWT应用中对我的服务层(所有* Impl.java类)进行单元测试。那么问题是在代码中,我有一个依赖项,它以Httpsession提供的对象为目标。实际上,我正在httpSession中存储一个User对象(当前登录的用户)。
为了从HttpSession(在* Impl.java类中)取回它,我正在使用它:
用户user = ServiceUtil.getUser(getThreadLocalRequest()。getSession());
如何从单元测试代码中模拟此对象?
非常感谢,
答案 0 :(得分:1)
在JUnit测试用例中,您可以编写
HttpSession session = new MockHttpSession();
MockHttpSession
为this
您可以将用户对象放在此会话中,然后执行测试用例。
答案 1 :(得分:0)
我建议您更改应用程序的结构,以便服务层不依赖于会话(上下文不可知)之类的东西,而是需要某种用户对象的方法将其注入(通过参数或然而)。所以实际上你包含了一个非常薄的表示层(或者你可以调用它)来处理诸如响应HTTP请求,记录用户并将用户对象放入会话以及只调用服务层方法之类的事情。
这样你可以在单元测试中模拟你的用户对象,将它传递给你的服务层,不需要任何模拟框架。