2016-05-05 9 views
2

私のテストクラスには多くの静的メソッドがありますが、テストクラスの特定のメソッドだけをモックしたいと思います。Javaクラスで特定の静的メソッドをモックする方法は?

私が模擬できる方法はありますかとそれ以外の静的メソッドは正常に動作していますか? 。

とどのように特定の値

するための方法をスタブには、これは私の方法 PowerMockito.stub(PowerMockito.method(ServiceUtils.class、 "getBundleの"、String.class))toReturn(バンドル)であると仮定。

私は、渡された異なる引数に対して異なる方法で動作するようにします。 例:文字列はabcまたはdefである可能性があります。したがって、各文字列getbundleメソッドは異なる動作をする必要があります。

PowerMockito.methodのString.classの代わりに、 "abc"のような値を渡すことができます。

(あなたがmokitoを使用している場合)あなたはこのような何かを行うことができ

答えて

2

あなたは、実際のオブジェクトのスパイを作成することができます。スパイを使用すると、実際のメソッドが呼び出されます(メソッドがスタブされている場合を除く)。

ここに公式ドキュメントの例があります。

List list = new LinkedList(); 
List spy = spy(list); 

//optionally, you can stub out some methods: 
when(spy.size()).thenReturn(100); 

//using the spy calls *real* methods 
spy.add("one"); 
spy.add("two"); 

//prints "one" - the first element of a list 
System.out.println(spy.get(0)); 

//size() method was stubbed - 100 is printed 
System.out.println(spy.size()); 

//optionally, you can verify 
verify(spy).add("one"); 
verify(spy).add("two"); 
0

when(mockedList.get(0)).thenReturn("first"); 
関連する問題