java - Spring Web Flow - 如何使用 conversationScope 中已有的值设置单元测试?

标签 java spring-webflow spring-webflow-2

我正在使用 Spring Web Flow 2.0 开发一个项目。

我正在尝试对以决策状态开始的流程进行单元测试。决策状态检查 conversationScope 上的对象的值。我不知道如何将值插入单元测试的 conversationScope

我试过:

getConversationScope().put("someName", value);
MockExternalContext context = new MockExternalContext();
startFlow(context);

但是,当我调用 startFlow(context) 时,该值似乎被清除了。

我也试过:

MockExternalContext context = new MockExternalContext();
setCurrentState("someDecisionState");
resumeFlow(context)

但测试失败并出现错误,告诉我无法从决策状态恢复,只能从 View 状态恢复。

有谁知道如何在 conversationScope 上插入模拟值以便我可以测试这些情况?

最佳答案

这不是很明显,但我想到了这个:

public void testFoo() {
    FlowExecution flowExecution = getFlowExecutionFactory().createFlowExecution(getFlowDefinition());
    updateFlowExecution(flowExecution);
    flowExecution.getConversationScope().put("fooBar", "goo");
    flowExecution.start(null, new MockExternalContext());        
    assertCurrentStateEquals("fooView");
}

我不得不深入研究底层的 AbstractXmlFlowExecutionTests.startFlow() 以了解它是如何实例化 FlowExecution 的,并将其中的一些内容复制并粘贴到单元测试中。

这是测试网络流程。

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/webflow
        http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <action-state id="decideFoo">
        <evaluate expression="conversationScope.fooBar" />
        <transition on="goo" to="fooView" />
        <transition on="gar" to="barView" />
    </action-state>

    <view-state id="fooView" />

    <view-state id="barView" />

</flow>

关于java - Spring Web Flow - 如何使用 conversationScope 中已有的值设置单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/804326/

相关文章:

java - 如何在Android SDK(在Travis中)上获取tools/source.properties?

java - 如何隐藏特定 fragment 的 View

java - 如何在登录屏幕上重定向 Spring 安全并发 session 控制 'message'?

java - 设置参数时出现问题

java - spring webflow 中的重定向错误消息

java - 如何通过套接字接收通过结果集检索的数据?

popup - spring webflow第二次弹窗问题

spring-mvc - Web 流添加模型属性以与表单值绑定(bind)

java - 针对缺少输入提供用户友好的错误页面

Java AOT + 动态加载java类