InvalidUseOfMatchersException:无效使用参数匹配器

时间:2018-04-28 07:10:34

标签: testing mockito

我是测试的新手。我尝试了这个,但有一个例外。

@Mock
private Context context;    
...
when(service.getResult(any(), context)).thenReturn(new ArrayList<>());

例外:

  

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
  参数匹配器的使用无效!
  2匹配预期,1记录:

2 个答案:

答案 0 :(得分:3)

Mockito.any()是Mockito参数匹配器。当您在模拟记录中定义的其中一个参数中指定它时,您必须对所有参数使用参数匹配器 Mockito.eq(T)是将任何参数转换为参数匹配器的方法 所以这应该没问题:

@Mock
private Context context;    

@Mock
private Service service; 
...
when(service.getResult(any(), eq(context)).thenReturn(new ArrayList<>());

答案 1 :(得分:1)

有很多次问过类似的问题。我认为最好的答案是:

  

Mockito要求您在存根方法调用时仅使用原始值或仅使用匹配器。完整的例外(这里没有发布)肯定会解释一切。

Invalid use of argument matchers