Spring Web Flow Unit测试:在没有视图状态的情况下在FlowScope中设置属性

时间:2012-09-27 08:52:41

标签: java spring-webflow spring-webflow-2

这类似于Spring Web Flow - How can I set up unit test with values already in conversationScope?

我已经使用了该问题中列出的解决方案来解决conversationScope问题,但是一直试图为FlowScope做同样的事情。出于某种原因,FlowExecution没有getFlowScope()方法。

非常感谢任何帮助或一般指向正确的方向。谢谢!

更新

为了提供更多上下文,这是我试图测试的网络流中的一行:

<evaluate expression="serviceFactory.getInstance(flowScope.config.country).startTransaction(flowScope.SomeList.get(0), 0)" />

和相关测试声明是:

EasyMock.expect(serviceObjectMock.startTransaction(someObjectMock, 0)).andReturn(true);

它无声地失败了。当我浏览调试器中的代码时,我看到此调用中存在IndexOutOfBoundsException,这导致我假设我必须以某种方式在flowScope中使用该列表。

2 个答案:

答案 0 :(得分:0)

<{1>}中的

,您可以使用FlowExecution
这将为您提供FlowScope,您可以在其中放置属性(在流程开始后)

您尝试做的事情并没有多大意义,因为在活动流会话的生命周期中存在Flow范围属性。 您无法在流程开始之前设置它们。

答案 1 :(得分:0)

对于任何感兴趣的人,我了解到我没有必要在flowScope中显式设置属性,因为当EasyMock通过“期望”列表时会处理该属性。

我的问题是“flowScope.SomeList.get(0)”是指在前一行中设置的属性,我使用“new ArrayList()”作为“expect”语句中的返回值线。

而且,“失败的静默”部分是由于我没有在Spring的测试配置文件中启用DEBUG级别信息。

这在测试log4j.xml文件中解决了问题:

    <logger name="org.springframework">
    <level value="DEBUG" />
</logger>