测试 Struts 2 动作,结果类型 freemarker
Posted
技术标签:
【中文标题】测试 Struts 2 动作,结果类型 freemarker【英文标题】:Testing Struts 2 actions, result type freemarker 【发布时间】:2012-06-04 10:38:06 【问题描述】:我正在尝试测试指向 freemarker 页面 (.ftl) 的 Struts 2 操作。当我使用 Spring 框架时,我的测试扩展了 StrutsSpringTestCase。我的问题是,在操作执行之后,它会搜索结果 freemarker 页面,但在它获取页面之前,它将语言环境(在我的情况下为 en_GB)附加到 ftl 页面。因此一无所获。
例如:
操作执行 - 结果页面 = login.ftl 但搜索 login_en_GB.ftl
动作执行 - 结果页面 = index.ftl 但搜索 index_en_GB.ftl
我不知道它为什么这样做或如何改变它。
【问题讨论】:
【参考方案1】:我认为您需要做的是在控制器上设置一个模拟 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);
【讨论】:
【参考方案2】:我用于此问题的解决方法是在执行操作后立即停止进程。这样做我并没有利用全部功能,但由于显然不支持 freemarker,这是我想到的最佳方式。
【讨论】:
以上是关于测试 Struts 2 动作,结果类型 freemarker的主要内容,如果未能解决你的问题,请参考以下文章