代码中有一个方法
def createdOrders = getValuesByStatus(extractedResponse, status)
其中extractedResponse
是jsonSlurper解析结果而status
只是字符串值
方法:
def getValuesByStatus(def jsonData, String status ) {
jsonData.findAll() { json->
json.responseStatus.status == status
}
}
使用Spock进行测试getValuesByStatus
完美无缺,
但以某种方式运行主应用程序会导致
java.lang.NullPointerException: Cannot get property 'responseStatus' on null object
在intellij idea中运行debug我可以看到jsonData
不是null而不是空,但findall闭包中的断点显示json
元素为空...
答案 0 :(得分:1)
只需使用null safe运算符:
def getValuesByStatus(def jsonData, String status ) {
jsonData.findAll { json->
json?.responseStatus?.status == status
}
}
答案 1 :(得分:0)
jsonData
包含空值,但在调试模式下你看不到它们,所以findall闭包中的空值检查有帮助。