Setelah saya memutakhirkan ke versi yang baru dirilis 2.2.0.RELEASE
Spring Boot beberapa tes saya gagal. Tampaknya MediaType.APPLICATION_JSON_UTF8
sudah usang dan tidak lagi dikembalikan sebagai tipe konten default dari metode pengontrol yang tidak menentukan tipe konten secara eksplisit.
Kode uji suka
String content = mockMvc.perform(get("/some-api")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andReturn()
.getResponse()
.getContentAsString();
tiba-tiba tidak berfungsi lagi karena jenis konten tidak cocok seperti yang ditunjukkan di bawah ini
java.lang.AssertionError: Content type
Expected :application/json;charset=UTF-8
Actual :application/json
Mengubah kode untuk .andExpect(content().contentType(MediaType.APPLICATION_JSON))
menyelesaikan masalah untuk saat ini.
Tetapi sekarang ketika membandingkan content
dengan objek serial yang diharapkan masih ada ketidakcocokan jika ada karakter khusus dalam objek. Tampaknya .getContentAsString()
metode ini tidak menggunakan pengkodean karakter UTF-8 secara default (lagi).
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."}]
Bagaimana saya bisa masuk content
dalam pengkodean UTF-8?