测试Struts 2动作,结果类型为freemarker

时间:2012-05-30 07:51:19

标签: spring junit struts2 locale freemarker

我正在尝试测试Struts 2操作,结果指向freemarker页面(.ftl)。当我使用Spring框架时,我的测试扩展了StrutsSpringTestCase。我的问题是,在操作执行后,它会搜索结果freemarker页面,但在它获取页面之前,它会将语言环境(在我的情况下为en_GB)附加到ftl页面。因此找不到任何东西。

例如:

操作执行 - 结果页面= login.ftl但搜索login_en_GB.ftl

操作执行 - Result Page = index.ftl但搜索index_en_GB.ftl

我无法弄清楚为什么会这样做或如何改变它。

2 个答案:

答案 0 :(得分:0)

我认为您需要做的是在控制器上设置模拟servlet请求。我们在代码中做了类似的事情,但模拟了帖子请求:

import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;

protected HttpServletRequest httpServletPostRequest = new MockHttpServletRequest("POST", "/");
httpServletPostRequest.addPreferredLocale(yourLocale);
controller.setServletRequest(httpServletPostRequest);

答案 1 :(得分:0)

我用于此问题的解决方法是在执行操作后立即停止该过程。通过这样做我没有充分利用完整功能,但由于显然不支持freemarker,这是我想到的最佳方式。