En la primavera de prueba de unidad Webflow, ¿cómo afirmar que un estado de vista tiene una vista de un nombre de pila?
-
18-09-2019 - |
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
?
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());