当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《SpringWebFlow-如何使用conversationScope中已有的值设置单元测试?》经验,为你挑选了1个好方法。

我正在使用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)

但是测试失败并且错误地告诉我,我无法从决策状态恢复,只能从视图状态恢复.

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



1> Scott Bale..:

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

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,并将其中的一部分复制并粘贴到单元测试中.

这是测试网络流程.




    
        
        
        
    

    

    


推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有