В модульном тестировании Spring Webflow, как вы утверждаете, что состояние просмотра имеет представление с заданным именем?

StackOverflow https://stackoverflow.com/questions/798375

Вопрос

Я разрабатываю 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());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top