Nella primavera WebFlow test di unità, come si fa a sostenere che uno stato di visualizzazione ha una vista di un nome?
-
18-09-2019 - |
Domanda
sto sviluppando un webflow Primavera, cercando di utilizzare TDD così ho esteso AbstractXmlFlowExecutionTests. Non riesco a vedere un modo ovvio per affermare quello che avrei pensato sarebbe una cosa semplice: che uno stato di visualizzazione ha una vista associata di un determinato nome. Ad esempio, dato questo flusso (estratto):
<?xml version="1.0" encoding="UTF-8"?>
<flow ...>
...
<view-state id="foo" view="barView">
</view-state>
</flow>
e unit test
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"));
}
C'è un modo più semplice per affermare che foo
Stato ha vista barView
?
Soluzione
È possibile utilizzare questo:
assertResponseWrittenEquals("barView", context);
Dove è il tuo context
MockExternalContext
.
Questo è come ho sempre prova questo comunque.
Altri suggerimenti
Se in realtà si sta segnalando eventi, è possibile ottenere il ViewSelection e verificare il nome tramite questo metodo:
assertViewNameEquals("Your View Name", applicationView(viewSelection));
Non posso parlare per il resto dei tuoi test, o il modo di utilizzare WebFlow, ma perché stai usando contains()
per verificare l'uguaglianza? Sono sicuro che non si vuole una visione di "barViewBlah" per abbinare il test, vero?
assertEquals("barView", view.toString());