春のWebflowユニットテストでは、どのようにビューステートが指定された名前のビューを持っていると主張していますか?

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

質問

私はAbstractXmlFlowExecutionTestsを拡張しましたように、TDDを使用しようと、春のWebflowを開発しています。ビューステートが指定された名前の関連するビューを持っていること:私は、私は単純なことだろうと思ったのだろうどのような主張する明白な方法を見ることはできません。例えば、このフローを所与の(抜粋):

<?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