在Spring Webflow单元测试中,如何断言视图状态具有给定名称的视图?

时间:2009-04-28 14:51:23

标签: java spring unit-testing spring-mvc spring-webflow

我正在开发一个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

3 个答案:

答案 0 :(得分:1)

您可以使用:

assertResponseWrittenEquals("barView", context);

contextMockExternalContext

这就是我总是测试它的方式。

答案 1 :(得分:1)

如果您实际发出事件信号,可以通过此方法获取ViewSelection并检查名称:

assertViewNameEquals("Your View Name", applicationView(viewSelection));

答案 2 :(得分:-1)

我无法与其他测试或如何使用Webflow交谈,但为什么使用contains()来测试相等性?我确定你不希望“barViewBlah”的视图与你的测试相匹配,是吗?

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