问题描述
我试图在我的Cucumber Step Defs中使用Mockito模拟,但是某种程度上它是行不通的。 每次都会得到相同的 org.mockito.exceptions.misusing.MissingMethodInvocationException 。
代码很简单。
@Rule
public MockitoRule mockito = MockitoJUnit.rule();
@Mock
public PlayDeck mockDeck = new PlayDeck(6);
@Mock
public Hand hand = new Hand(this.mockDeck);
@Angenommen("ich habe eine Karo {int} auf der Hand mit dem Wert {int}")
public void ich_habe_eine_Karo_auf_der_Hand_mit_dem_Wert(final Integer int1,final Integer int2) {
//given
Mockito.when(this.mockDeck.drawCard())
.thenReturn(Card.builder().color(CardColor.Diamond).face(getFaceByValue(int1)).build());
//when
this.hand.draw();
//then
Assertions.assertthat(this.hand.value()).isEqualTo(int2);
}
但是每次运行它都会失败。文档说: when()要求一个参数,该参数必须是“模拟的方法调用”。但是我的when(...)确实有一个Method。
我也尝试使用BDDMockito
BDDMockito.given(this.mockDeck.drawCard())
.willReturn(
Card.builder().color(CardColor.Diamond).face(getFaceByValue(int1)).build());
相同错误。但是在我的单元测试中,它可以正常工作。例如此处:
@Rule public MockitoRule mockito = MockitoJUnit.rule();
@Mock public PlayDeck mockDeck = new PlayDeck(8);
@Mock public Hand mockHand = new Hand(this.mockDeck);
@Test public void returnFalseIfBusted() {
//given
given(this.mockDeck.drawCard())
.willReturn(Card.builder().color(CardColor.Heart).face(CardFace.KING).build());
final Hand hand = new Hand(this.mockDeck);
//when
hand.draw();
//then
assertthat(hand.isBusted()).isTrue();
}
有人可以帮我吗?谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)