2

我正在开发一个 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"));
}

有没有更简单的方法来断言 statefoo有 view barView

4

3 回答 3

1

你可以使用这个:

assertResponseWrittenEquals("barView", context);

contextMockExternalContext.

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

于 2009-06-22T20:06:42.527 回答
1

如果您实际上是在发送事件信号,则可以通过以下方法获取 ViewSelection 并检查名称:

assertViewNameEquals("Your View Name", applicationView(viewSelection));
于 2009-09-23T17:30:49.137 回答
-1

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

assertEquals("barView", view.toString());
于 2009-04-28T15:10:09.280 回答