[Seasar-user:11210] Re: [S2JUnit4]@Mockアノテーションの使い方について
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2007年 10月 23日 (火) 12:26:13 JST
中村(taedium)です。
> S2JUnit4で@Mockアノテーションの target要素、pointcut要素、returnValue要素に
> 何を指定すればいいのかよくわからないのですが、
> 私が一応認識していることを書きますと、
>
> target = モックをつくるDaoのクラス
>
> pointcut = Daoのメソッド名
>
> returnValue = Daoのメソッドが返す戻り値
>
> ということでいいのでしょうか?
だいたい合っています。
@Mockでは、コンポーネントにMockInterceptorを適用します。、
targetにはインタセプターの適用先となるコンポーネントのクラスを指します。
クラスで一意に特定できない場合はtargetNameを使ってください。
(内部的にはtargetもしくはtargetNameに指定された値
をキーとしてS2ContainerからgetCompornentしています。)
pointcutには正規表現を使うこともできます。
> それと、returnValue要素にentityのクラスを指定したいのですが、例えば、
> returnValue = "'Book'"
> としても
> java.lang.String
> として、扱われてしまうようです。
> どのように指定すればいいのでしょうか?
returnValue = "new hoge.Book()"
としたり
@Mock(target = BookDao.class, pointcut = ".*", returnValue = "createBook()")
public void test() {
...
}
public Book createBook() {
・・・
return book;
}
としてエンティティを生成するメソッドを呼ぶこともできます。
ただし、returnValueの中でメソッドを呼ぶ場合はそのメソッドは
publicとして宣言しておく必要があります。
--
Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内