原因:不存在类型变量 T 的实例,因此 void 符合使用 mockito

San*_*Rey 22 java junit spring mockito spring-boot

我想在运行 void 方法时抛出异常

when(booking.validate(any())).thenThrow(BookingException.builder().build());
Run Code Online (Sandbox Code Playgroud)

但我有一个编译错误:

Required type: T
Provided: void
reason: no instance(s) of type variable(s) T exist so that void conforms to T
Run Code Online (Sandbox Code Playgroud)

Sha*_*don 38

对于void方法,我认为您需要使用doThrow语法。

所以在你的情况下,它将是:

doThrow(BookingException.builder().build())
      .when(booking)
      .validate(any());
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。

  • 上帝想象一下,如果这个mockito错误只是提供了这个作为提示,那么可以节省多少人的时间!我越来越讨厌java了... (2认同)

M-s*_*Nan 29

我找到了正确的语法。

Service mockedService = new DefaultServie();
doNothing().when(mockedService).sendReportingLogs(null);
Run Code Online (Sandbox Code Playgroud)

希望这能回答问题

  • 这让我绊倒了,这很有帮助。谢谢。 (3认同)