我的应用程序有两个类,FireWatcherAlarmBell。发生大火时,观察者应按水平的钟声。对于小火,请以较小的警报级别敲响铃铛;对于大火,请像疯了一样按门铃。

class FireWatcher {
  AlarmBell bell;
  void onFire(int fireLevel) { bell.ring(2 * fireLevel); }
}

class AlarmBell {
  void ring(int alarmLevel) { ... }
}


我想测试FireWatcher以确保它以正确的级别调用方法ring。我该如何使用Mockito做到这一点?

我想要类似以下内容的内容,但是在文档中找不到任何内容。

when(fireWatcher.onFire(1)).expect(mockAlarmBell.ring(2));

最佳答案

您需要传递模拟的AlarmBell

例:

@Test
public void watcherShouldRingTheAlarmBellWhenOnFire() {
   AlarmBell alarm = mock(AlarmBell.class);
   FireWatcher watcher = new FireWatcher(alarm);

   watcher.onFire(1);

   verify(alarm).ring(2);
}

09-05 23:27