Mockitoの使い方について質問させてください。
Mockにしたいオブジェクトがクラスではなく、あるクラス内の特定メソッドだけをMockに置き換えたいのですが、どのようにすればいいのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
以下のようにしたらいけました。
@Spyが使えてない?
Java
1import static org.mockito.Mockito.*; 2 3import org.junit.Before; 4import org.junit.Test; 5import org.mockito.Mockito; 6import org.mockito.Spy; 7 8 9public class MockTest { 10 11 @Spy 12 Sample1 sample1 = new Sample1(); 13 14 @Before 15 public void init() { 16 } 17 18 @Test 19 public void testcase001() { 20 Sample1 sample1 =Mockito.spy(new Sample1()); 21 when(sample1.method1()).thenReturn("when called method1"); 22 System.out.println(sample1.method1()); 23 System.out.println(sample1.method2()); 24 } 25} 26
投稿2020/03/20 10:51
総合スコア599
0
ベストアンサー
メソッドをMockとして扱う場合はorg.mockito.Mockitoクラスのspyメソッドを使います。
spyメソッドを使うと、スタブに置き換えるメソッドが明示的に定義されていない限りはリアルオブジェクトの対応するメソッドが呼び出されます。
(例)
lang
1public class MockitoSpyTest { 2 @Test 3 public void testVerify() { 4 5 List<String> spyList = Mockito.spy(new ArrayList<String>()); 6 7 //size()メソッドをMockとして置き換え 8 Mockito.when(spyList.size()).thenReturn(200); 9 spyList.add("spytest"); 10 11 //置き換えたsize()メソッドのみMockとして振舞っていることを確認 12 assertThat(spyList.size(),is(200)); 13 assertThat(spyList.get(0),is("spytest")); 14 } 15}
投稿2014/12/09 07:13
総合スコア284
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。