单元测试GWT应用程序时,如何模拟容器提供的对象(例如HttpSession)?

时间:2011-05-17 08:09:59

标签: unit-testing gwt mocking junit4 httpsession

我目前正在尝试在GWT应用中对我的服务层(所有* Impl.java类)进行单元测试。那么问题是在代码中,我有一个依赖项,它以Httpsession提供的对象为目标。实际上,我正在httpSession中存储一个User对象(当前登录的用户)。

为了从HttpSession(在* Impl.java类中)取回它,我正在使用它:

  

用户user = ServiceUtil.getUser(getThreadLocalRequest()。getSession());

如何从单元测试代码中模拟此对象?

非常感谢,

2 个答案:

答案 0 :(得分:1)

在JUnit测试用例中,您可以编写

    HttpSession session = new MockHttpSession();

MockHttpSessionthis

的位置

您可以将用户对象放在此会话中,然后执行测试用例。

答案 1 :(得分:0)

我建议您更改应用程序的结构,以便服务层不依赖于会话(上下文不可知)之类的东西,而是需要某种用户对象的方法将其注入(通过参数或然而)。所以实际上你包含了一个非常薄的表示层(或者你可以调用它)来处理诸如响应HTTP请求,记录用户并将用户对象放入会话以及只调用服务层方法之类的事情。

这样你可以在单元测试中模拟你的用户对象,将它传递给你的服务层,不需要任何模拟框架。