En la primavera de prueba de unidad Webflow, ¿cómo afirmar que un estado de vista tiene una vista de un nombre de pila?

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

Pregunta

Estoy desarrollando un Spring Web Flow, tratando de utilizar TDD por lo que he ampliado AbstractXmlFlowExecutionTests. No puedo ver una manera obvia de hacer valer lo que habría pensado que sería una cosa simple: que un estado de vista tiene una vista asociada de un nombre dado. Por ejemplo, dado este flujo (extracto):

<?xml version="1.0" encoding="UTF-8"?>
<flow ...>
    ...
    <view-state id="foo" view="barView">
    </view-state>
</flow>

y prueba de la unidad

public void testAssertFooStateHasBarView() {
    ...
    assertCurrentStateEquals("foo");
    assertTrue( getFlowDefinition().getState("confirmation").isViewState());
    // Surely there's an easier way...?
    ViewState viewState = (ViewState)getFlowDefinition().getState("foo");
    View view = viewState.getViewFactory().getView(new MockRequestContext());
    // yuck!
    assertTrue(view.toString().contains("barView"));
}

¿Hay una manera más sencilla para afirmar que ha estado foo vista barView?

¿Fue útil?

Solución

Puede utilizar esta:

assertResponseWrittenEquals("barView", context);

Cuando context es su MockExternalContext.

Así es como siempre pruebo esto de todos modos.

Otros consejos

Si está realmente eventos de señalización, se puede obtener el ViewSelection y compruebe el nombre a través de este método:

assertViewNameEquals("Your View Name", applicationView(viewSelection));

No puedo hablar con el resto de las pruebas, o cómo utilizar Webflow, pero ¿Por qué utiliza contains() para comprobar la igualdad? Estoy seguro de que no quiere una vista de "barViewBlah" para que coincida con su prueba, ¿verdad?

assertEquals("barView", view.toString());
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top