6
MockMvcはSpring Boot 2.2.0.RELEASEでUTF-8文字を処理しなくなりました
新しくリリースされた2.2.0.RELEASEバージョンのSpring Boot にアップグレードした後、一部のテストが失敗しました。と思われるMediaType.APPLICATION_JSON_UTF8非推奨となっており、もはや明示的にコンテンツタイプを指定しないコントローラメソッドからデフォルトのコンテンツタイプとして返されません。 のようなテストコード String content = mockMvc.perform(get("/some-api") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) .andReturn() .getResponse() .getContentAsString(); 以下に示すようにコンテンツタイプが一致しないため、突然機能しなくなりました java.lang.AssertionError: Content type Expected :application/json;charset=UTF-8 Actual :application/json .andExpect(content().contentType(MediaType.APPLICATION_JSON))今のところ問題を解決するためにコードを変更します。 しかしcontent、期待されるシリアル化されたオブジェクトと比較すると、オブジェクトに特殊文字がある場合でも不一致が発生します。この.getContentAsString()メソッドは、デフォルトでは(これ以上)UTF-8文字エンコーディングを使用しないようです。 java.lang.AssertionError: Response content expected:<[{"description":"Er hörte leise Schritte hinter sich."}]> but was:<[{"description":"Er hörte leise Schritte hinter sich."}]> Expected :[{"description":"Er hörte leise Schritte hinter sich."}] Actual :[{"description":"Er hörte …