[Seasar-user:11211] Re: [S2JUnit4]@Mockアノテーションの使い方について

Tetsutaroh Satoh [E-MAIL ADDRESS DELETED]
2007年 10月 23日 (火) 15:02:23 JST


佐藤徹太郎です。
中村さん、ご回答ありがとうございました。

申し訳ありませんが、もう一つ質問があります。

returnValue要素に変数を指定する場合は、どのように書けばいいのでしょうか?
例えば、int型の変数iを指定する場合、
テストクラスに
private int i;
と、定義して、
returnValue = "i"
と、したのですが、例外がスローされてしまいます。

ご教授いただけたらありがたいです。

よろしくお願いいたします。

-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Toshihiro Nakamura
Sent: Tuesday, October 23, 2007 12:26 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11210] Re: [S2JUnit4]@Mockアノテーションの使い方につい
て

中村(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 mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user





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