Mockito单元测试错误:MissingMethodInvocationException解决方法
@Test
@ClearAndBootstrapSql
public void test_permissionCheck() {
Permission permission = new Permission();
permission.setId(1);
permission.setDocument("CMSS::DeepWatch::Identity");
permission.setCategory("cs");
ArrayList<Permission> permissionList = new ArrayList<>();
permissionList.add(permission);
Mockito.when(permissionMapper.getPermissionOfUserByType("1",PermissionType.API.getValue())).thenReturn(permissionList);
Mockito.when(permissionMapper.selectList(any())).thenReturn(permissionList);
Boolean aBoolean = permissionService.permissionCheck("cs/cs");
assertNotNull(aBoolean);
}
这段单元测试会报错org.mockito.exceptions.misusing.MissingMethodInvocationException: \nwhen() requires an argument which has to be 'a method call on a mock'.\nFor example:\n when(mock.getArticles()).thenReturn(articles);怎么解决内容:这个错误是因为在使用Mockito.when()时没有正确指定方法调用。\n\n在这段代码中,permissionMapper是一个模拟对象,getPermissionOfUserByType()和selectList()是permissionMapper对象的方法。所以在使用Mockito.when()时,需要传入对permissionMapper对象方法的调用。\n\n修改代码如下:\n\njava\nMockito.when(permissionMapper.getPermissionOfUserByType("1", PermissionType.API.getValue())).thenReturn(permissionList);\nMockito.when(permissionMapper.selectList(any())).thenReturn(permissionList);\n\n\n这样就可以正确模拟permissionMapper对象的方法调用,并返回指定的结果。
原文地址: https://www.cveoy.top/t/topic/pz5S 著作权归作者所有。请勿转载和采集!