我正在为这种方法做一个模拟:
public String buscarDescripcion(MaestroDTO departamento, String codigoMunicipio){
String descripcion = null;
List<MaestroDTO> listaMunicipios = getListaMucipios(departamento);
if(listaMunicipios != null) {
for (MaestroDTO maestroDTO : listaMunicipios) {
if(maestroDTO.getCodigo().equals(codigoMunicipio)){
descripcion = maestroDTO.getNombre();
break;
}
}
}
return descripcion;
}
在Test类中。这将返回一个包含城市名称的列表。 但是当我运行测试时,我有NullPointerException错误。 我在测试类中使用的模拟是:
listaCiudad = mock(ListaCiudad.class);
when(listaCiudad.buscarDescripcion(any(MaestroDTO.class), any(BigDecimal.class).toString())).thenReturn("MEDELLIN");
方法buscarDescripcion有两个参数,MaestroDTO和一个String。当我使用String运行测试时,这会向我显示一个强制转换错误。当我使用BigDecimal.toString()时,这会向我展示一个nullpointerexception。我不知道我是否以错误的方式打电话给这些参数,因为我对嘲笑不太了解! 我感谢您的帮助!谢谢! (对不起我的英文)。
答案 0 :(得分:2)
你没有正确地模拟你的模拟。您应该将any(BigDecimal.class).toString()
替换为MockitoanyString()
Mockito.when(listaCiudad.buscarDescripcion(Mockito.any(MaestroDTO.class), Mockito.anyString())).thenReturn("MEDELLIN");