新しくリリースされた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 leise Schritte hinter sich."}]
content
UTF-8エンコーディングを取得するにはどうすればよいですか?