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