[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 メーリングリストの案内