2017-04-26 15 views
0

と一致しない基づいて、残りコントローラー春のJUnitテスト - 整数のためのJSONPath私の春のために、私は私のJUnitテストでは、次のアサーションを持って

.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

ました最初の解決策は動作し、2番目のエラーは次のようなエラーを返します: '期待:[<500>]ですが、:<[500]>' –

+1

@SamanthaCataniaです。 2番目の解決策を削除しました。結果としてjson配列を持っている限り、より良い方法は結果のインデックスを使用することです –

0

問題がある:式$..が戻ってあなたにArrayを与える..あなたは、エラーメッセージ[]からそれを認識することができ、あなたはこれを行うことができます。

$..terminationPoint.downstreamSpeedKbps[0]

+0

を確認する。これは、次のエラーで空の配列と結果を返します: '予想:<500>ですが:<[]>' –

関連する問題