Spring Web Flow- 이미 대화 코프에있는 값으로 단위 테스트를 어떻게 설정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/804326

문제

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 이 사례를 테스트 할 수 있도록?

도움이 되었습니까?

해결책

분명하지는 않지만 나는 이것을 생각해 냈습니다.

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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top