2009-04-28 4 views
2

私はSpring Webflowを開発しており、TDDを使用しようとしていますので、AbstractXmlFlowExecutionTestsを拡張しました。私は単純なことであると思っていると主張する明白な方法を見ることができません。ビューステートには、指定された名前のビューが関連付けられています。例えば、このフロー(抜粋)所与:Spring 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を有する状態をアサートするが簡単な方法はありますか?

答えて

1

私はこれをとにかくテストしています。あなたが実際にイベントをシグナルしている場合は、あなたがViewSelectionを取得し、この方法で名前を確認することができます

+0

ありがとうございます!あなたはこれがどのくらいぞっとして醜いコードを整えているか分かりません。 –

-1

残りのテストやWebflowの使い方については話せませんが、を使用して同等性をテストする理由は何ですか?あなたはあなたのテストに合った "barViewBlah"のビューを望んでいないと思いますか? contextがあなたのMockExternalContextある

assertResponseWrittenEquals("barView", context); 

:あなたはこれを使用することができます

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

私はより良い方法を探しています理由です、それは総です同意します。この場合、ViewオブジェクトのtoStringは[[email protected] viewId = 'barView']なので、私はまっすぐな比較はできず、その 'barView'値を取得するAPIはありません。 –

+0

MockViewにキャストした場合は、viewNameのアクセサが用意されていますか? –

+0

オプションではありません - MockViewは、MockViewFactoryCreatorの内部クラスであり、パッケージにしか表示されません。私は反射を使用することができますが、それはおおよそ同じ量を吸う。 –

1

assertViewNameEquals("Your View Name", applicationView(viewSelection)); 
関連する問題