当我尝试运行黄瓜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 (将#修改为@)