如何解决当我尝试运行黄瓜StepDef时出现Mockito MissingMethodInvocationException
我试图在我的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 举报,一经查实,本站将立刻删除。