代码之家  ›  专栏  ›  技术社区  ›  Scott Bale

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

  •  2
  • Scott Bale  · 技术社区  · 17 年前

    我正在开发一个SpringWebFlow,尝试使用TDD,所以我扩展了AbstractXmlFlowExecutionContents。我看不出一个明显的方法来断言我认为是一件简单的事情:一个视图状态有一个给定名称的关联视图。例如,给定此流(摘录):

    <?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 回复  |  直到 14 年前
        1
  •  1
  •   TM. Randy Simon    17 年前

    您可以使用:

    assertResponseWrittenEquals("barView", context);
    

    在哪里? context 是你的 MockExternalContext .

    不管怎样,我总是这样测试这个。

        2
  •  1
  •   MetroidFan2002    17 年前

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

    assertViewNameEquals("Your View Name", applicationView(viewSelection));
    
        3
  •  -1
  •   matt b    17 年前

    我不能和你的其他测试交流,也不能告诉你如何使用WebFlow,但是你为什么要使用 contains() 为了测试平等?我确定你不想让“barviewblah”的视图与你的测试相匹配,是吗?

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