0

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

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

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

如何从我的单元测试代码中模拟这个对象?

多谢,

4

2 回答 2

1

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

    HttpSession session = new MockHttpSession();

MockHttpSession是哪里

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

于 2012-10-08T10:43:08.030 回答
0

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

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

于 2011-05-17T09:13:09.963 回答