这类似于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中使用该列表。
答案 0 :(得分:0)
,您可以使用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>