测试 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的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 Action/动作

Struts2 Action/动作

Struts2框架---result结果集

Struts2 结果和结果类型

Struts2 结果和结果类型

直接访问Struts 2动作类属性