Dans l'essai de l'unité printemps Webflow, comment avez-vous affirmer que l'état d'affichage a une vue d'un nom donné?
-
18-09-2019 - |
Question
Je développe un webflow de printemps, en essayant d'utiliser TDD donc j'ai AbstractXmlFlowExecutionTests étendu. Je ne vois pas de façon évidente d'affirmer ce que j'aurais pensé serait une chose simple: que l'état d'affichage a une vue associée d'un nom donné. Par exemple, étant donné ce flux (extrait):
<?xml version="1.0" encoding="UTF-8"?>
<flow ...>
...
<view-state id="foo" view="barView">
</view-state>
</flow>
et test unitaire
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"));
}
est-il un moyen plus simple d'affirmer que l'Etat a foo
vue barView
?
La solution
Vous pouvez utiliser ceci:
assertResponseWrittenEquals("barView", context);
Où context
est votre MockExternalContext
.
Voici comment je teste toujours cela de toute façon.
Autres conseils
Si vous êtes en fait des événements de signalisation, vous pouvez obtenir le ViewSelection et vérifier le nom par cette méthode:
assertViewNameEquals("Your View Name", applicationView(viewSelection));
Je ne peux pas parler au reste de vos tests, ou comment utiliser Webflow, mais pourquoi utilisez-vous contains()
pour tester l'égalité? Je suis sûr que vous ne voulez pas une vue de « barViewBlah » pour correspondre à votre test, pensez-vous?
assertEquals("barView", view.toString());