2017-04-26 28 views
0

我在我的JUnit测试以下断言为我的春节,基于REST控制器春天JUnit测试 - JSONPath整数不匹配

.andExpect(jsonPath("$..terminationPoint.downstreamSpeedKbps", is(Integer.valueOf(500)))); 

这一说法正在针对以下的有效载荷由:

{ 
    "result":[ 
     { 
     "terminationPoint":{ 
      "downstreamSpeedKbps":500 
     } 
     } 
    ] 
} 

java.lang.AssertionError: JSON path "$..terminationPoint.downstreamSpeedKbps" 
Expected: is <500> but: was <[500]> 

任何想法WH:

当断言运行,我发现了以下错误这些方括号是从哪里来的?或者它们是什么意思?

回答

0

$..将进行深度扫描和返回所有值的数组是你的json。 使用特定的,而不是指数:

.andExpect(jsonPath("$.result[0].terminationPoint.downstreamSpeedKbps", 
        is(Integer.valueOf(500)))); 

Here你与jsonpath玩,检查结果

+0

第一个解决方案有效,第二个解决方案返回以下错误:'预期:[<500>]但是:是<[500]>' –

+1

@SamanthaCatania你是对的。删除了第二个解决方案。只要你有json数组作为结果,更好的方法是使用结果的索引 –

0

的问题是:表达$..给你一个Array回来..你也可以从错误消息[]认识它,你可以这样做:

$..terminationPoint.downstreamSpeedKbps[0]

+0

这将返回以下错误空数组和结果:'预计:为<500>但:是<[]>' –

相关问题