【发布时间】:2016-08-11 20:59:42
【问题描述】:
我正在为这个方法做一个模拟:
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;
}
在测试类中。这将返回一个完整的城市名称列表。 但是当我运行测试时,出现 NullPointerException 错误。 我在测试类中使用的模拟是这样的:
listaCiudad = mock(ListaCiudad.class);
when(listaCiudad.buscarDescripcion(any(MaestroDTO.class), any(BigDecimal.class).toString())).thenReturn("MEDELLIN");
方法buscarDescription 有两个参数,MaestroDTO 和一个String。当我使用字符串运行测试时,这向我显示了一个转换错误。当我使用 BigDecimal.toString() 时,这会显示一个空指针异常。我不知道我是否以错误的方式调用了这个参数,因为我对模拟不太了解! 我感谢您的帮助!谢谢! (对不起我的英语)。
【问题讨论】:
-
语法
when(object.methodCall()).thenReturn(x)无论如何都会执行真正的方法。如果你想避免它,请改用doReturn(x).when(object).methodCall())。 -
堆栈跟踪或调试器应该告诉你什么是空的。我猜这是你的模拟没有处理的其他东西。