[Seasar-user:10511] Re: [Teeda] S2Containerを使用したPageクラスのテストについて

matsuda [E-MAIL ADDRESS DELETED]
2007年 9月 13日 (木) 21:27:37 JST


小林様

松田です。
深夜のご回答ありがとうございます。
ご教授いただいた方法でテストが可能となりました。

> 本題からはそれますが,Dto も Seasar2 に
> お任せにした方がいいのではないでしょうか?

はい。それも考えております。
同じ事を実現するのに複数の方法が存在するため、
まずは見てわかりやすいものから着手した次第です。

じっくり腰を据えてかかっていこうと考えておりますので、
今後ともよろしくお願いします。

以上

> 小林 (koichik) です.
> 
> Date:    Thu, 13 Sep 2007 00:50:45 +0900
> From:    matsuda <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:10491] [Teeda] S2Containerを使用したPageクラスのテストについて
> 
> > 仕様としましては、コンテナからSessionを取得し、Dtoを格納。
> > 次ページでSessionからDtoを取得し、内容を表示するというものです。
> 
> 本題からはそれますが,Dto も Seasar2 に
> お任せにした方がいいのではないでしょうか?
> 
> @Component(instance=InstanceType.SESSION)
> public class FooDto {
>   ...
> }
> 
> public class AaaPage {
>   public FooDto fooDto;
> 
>   public Class doHoge() {
>     fooDto.setBar("bar");
>     return BbbPage.class;
>   }
> }
> 
> public BbbPage {
>   public FooDto fooDto;
>   public String bar;
> 
>   public Class prerender() {
>     bar = fooDto.getBar();
>     return null;
>   }
> }
> 
> それはさておき,
> 
> > 1.AaaPage#doHoge()でDtoがセットされたことをテストメソッドから確認する方
> > 法
> 
> S2TestCase (や TeedaTestCase) では
> HttpServletRequest や HttpSession のモックが
> 用意されているので,
> 
> public class AaaPageTest extends S2TestCase {
>   private AaaPage aaaPage;
> 
>   public void testDoHoge() throws Exception {
>     aaaPage.doHoge();
>     HttpSession session = getRequest().getSession(false);
>     assertNotNull(session);
>     FooDto fooDto = (FooDto) session.getAttribute("fooDto");
>     assertNotNull(fooDto);
>     assertEquals("bar", fooDto.getBar();
>   }
> }
> 
> みたいにテストできます.
> 
> > 2.BbbPage#prerender()のテストを行う方法
> >           (特にSession内のFooDtoにMockを使用する方法)
> 
> 通常 Dto にモックを使う必要はないのでは?
> 構造体のようなものだと思うので.
> ともあれ (JW),必要なら
> 
> public class BbbPageTest extends S2TestCase {
>   private BbbPage bbbPage;
> 
>   protected void setUpPrerender() throws Exception {
>     FooDtoMock mock = new FooDtoMock();
>     mock.setBar("bar");
>     ...
>     getRequest().getSession().setAttribute("fooDto", mock);
>   }
> 
>   public void testPrerender() throws Exception {
>     bbbPage.prerender();
>     assertEquals("bar", bbbPage.getBar());
>   }
> }
> 
> のようにできます.
> 
> P.S.
> 上に書いたコードは全部メーラ上で書いただけなので
> コンパイルすら通らないかもしれませんがよろしくです.
> 
> 
> -- 
> <component name="koichik">
>     <property name="fullName">"Koichi Kobayashi"</property>
>     <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>     <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user

-- 
matsuda <[E-MAIL ADDRESS DELETED]>




Seasar-user メーリングリストの案内