我在模拟中有一个NullPointerException,我不知道该怎么做

时间:2016-08-11 12:50:15

标签: java mocking mockito

我正在为这种方法做一个模拟:

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。我不知道我是否以错误的方式打电话给这些参数,因为我对嘲笑不太了解! 我感谢您的帮助!谢谢! (对不起我的英文)。

1 个答案:

答案 0 :(得分:2)

你没有正确地模拟你的模拟。您应该将any(BigDecimal.class).toString()替换为MockitoanyString()

Mockito.when(listaCiudad.buscarDescripcion(Mockito.any(MaestroDTO.class), Mockito.anyString())).thenReturn("MEDELLIN");