1

MockRoundtrip を使用するように Stripes を設定する例を次に示します。

private void setupStripes() {
    context = new MockServletContext("testresults");

    // Add the Stripes Filter
    Map<String,String> filterParams = new HashMap<String,String>();
    filterParams.put("ActionResolver.Packages", "com.test.project.action,com.test.results.action");
    context.addFilter(StripesFilter.class, "StripesFilter", filterParams);

    // Add the Stripes Dispatcher
    context.setServlet(DispatcherServlet.class, "StripesDispatcher", null);


    mockRoundtrip = new MockRoundtrip(context, MyActionBean.class);
    assertNotNull(mockRoundtrip.getActionBean(MyActionBean.class));
}

問題は、最後の行が常にアサーションに失敗することです。最初に呼び出す必要がありますmockroundtrip.execute("eventName")が、その時点で、アクション Bean はすでに作成されています。アクション Bean が appserver に依存することを行う場合 (例: EJB を使用する、JNDI ルックアップを行う)、 の呼び出しを完了することはできませんexecute()。私ができるようにしたいのは、アクション Bean のインスタンスを取得し、そのフィールドに依存性を注入してから、呼び出すことexecute()です。それを行う方法はありますか?

4

1 に答える 1

1

これをメーリングリストに投稿したところ、次の回答が得られました。

どうやら男はテストにインターセプターを使用しているようです。

それはあなたも望んでいることだと思います。必要に応じて「注入」を実行する Stripes Interceptor を作成し、単体テスト用にこれのみを登録します。IMO をスタブする必要はありません。

ところで、それが @SpringBean の機能です。Interception にも基づいています。

要約すると、テスト コードを実行するときにのみ使用するインターセプターを作成します。このインターセプターは、テストしているアクション Bean に Dependency Inject できます。

于 2013-02-12T18:51:28.357 に答える