关于java:使用Mockito模拟spring存储库删除时无法应用

Cannot apply when mocking spring repository delete with Mockito

本问题已经有最佳答案,请猛点这里访问。

我在谷歌上搜索了所有我能想到的解决方案,但措辞很难。

我有一个在Spring存储库中调用delete的单元测试。回购协议定义为:

1
public interface FileConfigurationRepository extends CasenetRepository<FileConfiguration, String> {}

我测试的方法有以下调用:

1
    fileConfigurationRepository.delete(GlobalConfiguration.CUSTOM_LOGO_ID);

其中globalconfiguration.custom_logo_id定义为:

1
public static final String CUSTOM_LOGO_ID ="customLogoId";

所以我写了下面的模拟:

1
  Mockito.when(fileConfigurationRepository.delete(GlobalConfiguration.CUSTOM_LOGO_ID)).thenThrow(new Exception());

但是我得到了以下错误:

enter image description here

错误文本:

1
No instance(s) of type variable(s) T exist so that void conforms to T

不确定如何进行。


如前所述,问题实际上是返回是空的,而不是传递的参数类型。根据如何用mock i to制作mock-to-void方法,我对代码进行了如下修改:

1
    Mockito.doThrow(new RuntimeException()).when(fileConfigurationRepository).delete(GlobalConfiguration.CUSTOM_LOGO_ID);

这解决了问题。