WidgetProcessor
別のクラスに依存するクラスがありますFizzChecker
:
public class FizzChecker {
public boolean hasMoreBuzz() {
// Sometimes returns true, sometimes returns false.
}
}
このメソッドは、次のようhasMoreBuzz()
に内部から呼び出されます。WidgetProcessor
public class WidgetProcessor {
public int process() {
while(fizzChecker.hasMoreBuzz()) {
// ... process stuff in here
}
}
}
次の場合のテストケースを書きたい:
fizzChecker.hasMoreBuzz()
最初に呼び出されたときに false を返します (したがって、ループは実行されません)。fizzChecker.hasMoreBuzz()
5 回目の呼び出しで false を返す
Mockitoでこれを達成する方法を見つけようとしています。これまでのところ、私の最高の(ひどい)試み:
WidgetProcessor fixture = new WidgetProcessor();
FizzChecker mockFizzChecker = Mockito.mock(FizzChecker.class);
// This works great for the first test case, but what about the 2nd
// where I need it to return: true, true, true, true, false?
Mockito.when(mockFizzChecker).hasMoreBuzz().thenReturn(false);
fixture.setFizzChecker(mockFizzCheck);
fixture.process();
// Assert omitted for brevity
前もって感謝します。