2
我想測試fan.setState
方法被調用或不如何使用的Mockito
class OffState implements State {
@Override
public void changeState(Fan fan) {
fan.setState(new OnState());
}
}
我想測試fan.setState
方法被調用或不如何使用的Mockito
class OffState implements State {
@Override
public void changeState(Fan fan) {
fan.setState(new OnState());
}
}
像這樣給出的測試代碼:
@RunWith(MockitoJUnitRunner.class)
public class OffStateTest {
@Mock
private Fan fan;
@Test
public void testChangeState() {
//Arrange
OffState offState = new OffState();
//Act
offState.changeState(fan);
//Assert
Mockito.verify(fan).setState(Mockito.any(OnState.class));
}
}
@Nkosi:我是假設了'OnState.equals() '方法會覆蓋這個。我開始編寫測試用例的ArgumentCaptor表單,但覺得這樣做可能只會混淆事件。無論如何,使用'Mockito.any()'是使它通過的最簡單方法,如果需要,OP可以移動到自定義匹配器或ArgumentCaptor。謝謝! – glytching
但是,如果我使用任何驗證(風扇).setState(Mockito.any(OffState.class));或者驗證(fan).setState(Mockito.any(OnState.class));仍然有效 – Srinivas