В модульном тестировании Spring Webflow, как вы утверждаете, что состояние просмотра имеет представление с заданным именем?
-
18-09-2019 - |
Вопрос
Я разрабатываю Spring webflow, пытаясь использовать TDD, поэтому я расширил AbstractXmlFlowExecutionTests.Я не вижу очевидного способа утверждать то, что, как мне казалось, было бы простой вещью:что состояние представления имеет связанное представление с заданным именем.Например, учитывая этот поток (выдержка):
<?xml version="1.0" encoding="UTF-8"?>
<flow ...>
...
<view-state id="foo" view="barView">
</view-state>
</flow>
и модульный тест
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"));
}
Есть ли более простой способ утвердить это состояние foo
имеет вид barView
?
Решение
Вы можете использовать это:
assertResponseWrittenEquals("barView", context);
Где context
является вашим MockExternalContext
.
В любом случае, именно так я всегда это проверяю.
Другие советы
Если вы на самом деле сигнализируете о событиях, вы можете получить ViewSelection и проверить имя с помощью этого метода:
assertViewNameEquals("Your View Name", applicationView(viewSelection));
Я не могу говорить с остальными вашими тестами или о том, как использовать Webflow, но почему вы используете contains()
чтобы проверить на равенство?Я уверен, что вы не хотите, чтобы вид "barViewBlah" соответствовал вашему тесту, не так ли?
assertEquals("barView", view.toString());