Frage

Ich arbeite an einem Projekt mit Spring Web Flow 2.0.

Ich versuche, Unit-Test eine Strömung, die mit einem Entscheidungszustand beginnt. Der Entscheidungszustand überprüft den Wert eines Objekts, das auf dem conversationScope ist. Ich kann nicht herausfinden, wie ein Wert in die conversationScope für den Unit-Test einzufügen.

Ich habe versucht:

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

Es scheint jedoch, dass, wenn ich startFlow(context) rufen wird der Wert gelöscht.

Ich habe auch versucht:

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

Aber der Test nicht mit einem Fehler mir zu sagen, dass ich nicht von einem Entscheidungszustand wieder aufgenommen werden kann, nur aus einer Sicht Zustand.

Wer weiß, wie ich Mock-Werte auf dem conversationScope einfügen kann, so dass ich diese Fälle testen kann?

War es hilfreich?

Lösung

Es ist nicht offensichtlich, aber ich kam mit dieser:

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

Ich hatte in den darunter liegenden AbstractXmlFlowExecutionTests.startFlow() zu graben, um zu sehen, wie sie die FlowExecution wurden instanziiert wird, und kopieren und einige davon in den Unit-Test einfügen.

Hier ist der Test Web-Flow.

<?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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top