Spring Web Flow- 이미 대화 코프에있는 값으로 단위 테스트를 어떻게 설정할 수 있습니까?
-
03-07-2019 - |
문제
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>
제휴하지 않습니다 StackOverflow