模拟数据源时出现InvalidUseOfMatchersException

时间:2017-05-15 10:32:21

标签: mockito

@Test
public void getRelationInteractionDataTest() throws Exception {
    InteractionData iData = new InteractionData();
    when(mockJdbcTemplate.getDataSource()).thenReturn(dataSource);
    relationshipCheckDaoImpl.getRelationInteractionData(Mockito.anyString(), Mockito.anyString());
}
Exception:failed with = org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
0 matchers expected, 3 recorded:

1 个答案:

答案 0 :(得分:1)

relationshipCheckDaoImpl.getRelationInteractionData(Mockito.anyString(), Mockito.anyString());

虽然使用'any'参数测试方法听起来很诱人,但是,这不是匹配器的用途。改为使用实际值:

relationshipCheckDaoImpl.getRelationInteractionData("a", "b");

原因是:您可以在准备模拟方法时使用匹配器...

Mockito.when( a.doB( Mockito.anyString() ) ).thenReturn("XYZ";

......或在确认某事被调用时......

Mockito.verify( a ).doB( Mockito.anyString() );

...但是在调用方法本身时却没有,因为匹配器应该匹配什么?这只会混淆Mockito的内部系统。