В модульном тесте Spring Webflow как вы утверждаете, что состояние представления имеет представление с заданным именем? - PullRequest
2 голосов
/ 28 апреля 2009

Я занимаюсь разработкой веб-потока Spring, пытаюсь использовать 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?

Ответы [ 3 ]

1 голос
/ 23 июня 2009

Вы можете использовать это:

assertResponseWrittenEquals("barView", context);

Где context ваш MockExternalContext.

Вот так я всегда проверяю это.

1 голос
/ 23 сентября 2009

Если вы фактически сигнализируете о событиях, вы можете получить ViewSelection и проверить имя с помощью этого метода:

assertViewNameEquals("Your View Name", applicationView(viewSelection));
0 голосов
/ 28 апреля 2009

Я не могу говорить с остальными вашими тестами или о том, как использовать Webflow, но почему вы используете contains() для проверки на равенство? Я уверен, что вы не хотите, чтобы представление "barViewBlah" соответствовало вашему тесту, не так ли?

assertEquals("barView", view.toString());
...