Nach dem Upgrade auf die neu veröffentlichte 2.2.0.RELEASE
Version von Spring Boot sind einige meiner Tests fehlgeschlagen. Es scheint, dass der MediaType.APPLICATION_JSON_UTF8
veraltet ist und nicht mehr als Standardinhaltstyp von Controller-Methoden zurückgegeben wird, die den Inhaltstyp nicht explizit angeben.
Testcode wie
String content = mockMvc.perform(get("/some-api")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andReturn()
.getResponse()
.getContentAsString();
funktionierte plötzlich nicht mehr, da der Inhaltstyp wie unten gezeigt nicht übereinstimmte
java.lang.AssertionError: Content type
Expected :application/json;charset=UTF-8
Actual :application/json
Ändern Sie den Code, .andExpect(content().contentType(MediaType.APPLICATION_JSON))
um das Problem vorerst zu beheben.
Beim Vergleich content
mit dem erwarteten serialisierten Objekt besteht jedoch immer noch eine Nichtübereinstimmung, wenn das Objekt Sonderzeichen enthält. Es scheint, dass die .getContentAsString()
Methode standardmäßig nicht mehr die UTF-8-Zeichencodierung verwendet (mehr).
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."}]
Wie komme ich content
zur UTF-8-Codierung?