No teste de unidade Primavera Webflow, como você afirmar que um estado de exibição tem uma vista de um determinado nome?
-
18-09-2019 - |
Pergunta
Estou desenvolvendo um webflow Spring, tentando usar TDD para que eu tenha estendido AbstractXmlFlowExecutionTests. Eu não posso ver uma maneira óbvia para afirmar que eu teria pensado seria uma coisa simples: que um estado de exibição tem uma vista associada de um determinado nome. Por exemplo, dado este fluxo (trecho):
<?xml version="1.0" encoding="UTF-8"?>
<flow ...>
...
<view-state id="foo" view="barView">
</view-state>
</flow>
e teste de unidade
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"));
}
Existe uma maneira mais simples de afirmar que foo
estado tem vista barView
?
Solução
Você pode usar este:
assertResponseWrittenEquals("barView", context);
Onde context
é o seu MockExternalContext
.
Isto é como eu sempre testar isso de qualquer maneira.
Outras dicas
Se você está realmente sinalização eventos, você pode obter o ViewSelection e verificar o nome através deste método:
assertViewNameEquals("Your View Name", applicationView(viewSelection));
Eu não posso falar para o resto de seus testes, ou como usar Webflow, mas porque você está usando contains()
para teste de igualdade? Tenho certeza que você não quer uma visão de "barViewBlah" para combinar com seu teste, não é?
assertEquals("barView", view.toString());