[Seasar-user:10492] Re: [Teeda] S2Containerを使用したPageクラスのテストについて
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 9月 13日 (木) 03:03:58 JST
小林 (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 メーリングリストの案内