2015-09-07 5 views
5

DBから現在のカウンタ値を取得している次のコードがあります。次に、DB内のカウンタを更新し、再び値を取得します。モックへの別の呼び出しで異なる値を返すにはどうすればよいですか?

int current = DBUtil.getCurrentCount(); 
DBUtil.updateCount(50);// it updates the current count by adding 50 
int latest = DBUtil.getCurrentCount(); 

私は最初の呼び出しは100を返す必要がありますし、2番目の呼び出しは、どのように私はPowerMockitoはこれを達成するために使用できる150を返すべきであるような方法で静的メソッドをモックとしたいですか? PowerMockと一緒にTestNG、Mockitoを使用しています。

+0

なぜ 'DBUtil'は静的ですか?インスタンスを挿入すると、PowerMockは必要ありません。 – durron597

答えて

10

Mockitoは戻り値の変更をサポートしています。このサポートはPowerMockitoまで拡張されています。ただ、OngoingStubbing.thenReturn(T value, T... values)

OngoingStubbing<T> thenReturn(T value, T... values) 

を使用すると、メソッドが呼び出されたときに連続した戻り値が返されるように設定します。
例えば:配列で

when(mock.someMethod()).thenReturn(1, 2, 3); 

最後の戻り値(例:3)さらに連続コールの挙動を決定します。

ので、この場合には、あなたはどうなる:

PowerMockito.when(DBUtil.getCurrentCount()).thenReturn(100, 150); 

注:この答えは、あなたがすでにstatic方法を模擬する方法を知っている前提としています。表示されない場合は、this questionを参照してください。

関連する問題