2017-02-16 13 views
1

と一致していないと私は戻っJSONオブジェクトからUUID値をチェックする必要があり、この試験方法を参照してください。このエラーを生成します。MockMvc JsonPath結果マッチャは私のREST APIコントローラのテストを書いています単一の値

Expected: is "6c2b1c8a-3c29-4160-98b0-b8eaea7ea4d1" 
     but: was <["6c2b1c8a-3c29-4160-98b0-b8eaea7ea4d1"]> 
     at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) 
     at org.springframework.test.util.JsonPathExpectationsHelper.assertValue(JsonPathExpectationsHelper.java:74) 
     at org.springframework.test.web.servlet.result.JsonPathResultMatchers$1.match(JsonPathResultMatchers.java:86) 
     at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:171) 

ID 6c2b1c8a-3c29-4160-98b0-b8eaea7ea4d1が正しく返されますが、中に異なる構造にシリアライズされているようです。

私のコードに問題がありますか?

+0

あなたはインポを投稿できますか? – Jaiwo99

+0

具体的な実装には関係しません。私はチェックする方法を知る必要があります私の値と等しいUUIDの値が返されます。 – Artegon

答えて

0

私が見ているように、jsonPath変数はオブジェクトの配列であり、単一のStringではありません。

あなたはUUIDであるあなたのケースでは最初で唯一の要素を取得するために$[0]を使用する必要があります。

mockMvc.perform(get("/api/envelopes/{id}", uuidString)). 
      andExpect(status().isOk()) 
      .andExpect(content().contentType(Util.APPLICATION_JSON_UTF8)) 
      .andExpect(jsonPath("$[0]", is(uuidString))); 
0

の理由は、あなたのjsonpath宣言は、あなたが使うべきではありません

"6c2b1c8a-3c29-4160-98b0-b8eaea7ea4d1" <--- String 
<["6c2b1c8a-3c29-4160-98b0-b8eaea7ea4d1"]> <--- Array 

間違っています $..id、これはあなたに配列を返します。ここで文書をチェックアウトしてください https://github.com/jayway/JsonPath

関連する問題