[Seasar-user:8922] Re: Request自動バインディングしたクラスのテスト方法
Nakata Kouji
[E-MAIL ADDRESS DELETED]
2007年 7月 4日 (水) 08:48:19 JST
なかたです。
07/07/04 に Koichi Kobayashi<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 小林 (koichik) です.
>
> Date: Tue, 3 Jul 2007 16:45:26 +0900
> From: "Nakata Kouji" <[E-MAIL ADDRESS DELETED]>
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:8909] Request自動バインディングしたクラスのテスト方法
>
> > Request自動バインディング(http://s2container.seasar.org/2.4/ja/DIContainer.html#Request)
> > を使ったクラスのテストをしたいのですが、どういう方法がいいのでしょうか?
>
> どういうテストをしたいのかにもよりますが,
> S2TestCase や S2Unit4 では HttpServletRequest 等の
> モックを設定済みなので,何も気にしなくても request
> スコープのコンポーネントを扱うことができます.
>
> fooTest.dicon に次の定義があるとして,
>
> <component name="foo" instance="request" class="Foo"/>
>
> public class FooTest extends S2TestCase {
> Foo foo;
>
> protected void setUp() throws Exception {
> super.setUp();
> include("fooTest.dicon");
> }
>
> public void test() throws Exception {
> assertTrue(foo.execute());
> }
> }
これって、インスタンス管理の話ですよね?
request.setAttribute("foo", new Foo());
と同義の。そっちじゃなくて、プロパティにrequest を持つと、自動的にバインドしてくれる
機能の方なんです。
ユニットテストで、
public class FooImpl implements Foo {
のクラスを
Foo foo = (Foo)container.getComponent(Foo.class);
と取得したときに、すでに request にバインドされた状態で返されるにはどうするか?
と言い換えることもできます。
Seasar-user メーリングリストの案内