PUT MockMvc テストを機能させようとしているときに、JSON がサポートされていないことがわかりました。このスレッドからの回答を使用: Configure MappingJacksonHttpMessageConverter
WebMvcConfigurationSupport クラスを拡張することで、これを解決できました。ただし、このオーバーライドを使用すると、GET テストで返された ModelAndView データが NULL になったように見えます。これを使用して応答データを取得できることはわかっています。
String content = result.getResponse().getContentAsString();
しかし、ModelAndView データが NULL である理由を説明できる人はいますか?
これが私のMockMVCテストクラスです:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration("test-rest-context.xml")
public class AccountControllerTest {
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
private MediaType contentType = new MediaType(MediaType.APPLICATION_JSON.getType(),
MediaType.APPLICATION_JSON.getSubtype(),
Charset.forName("utf8"));
@Before
public void setUp() throws Exception {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build();
}
@Test
public void findCustomerByID() throws Exception {
MvcResult result = mockMvc.perform(get("/api/account/customers/{customerID}", "123").accept(contentType)
.param("fields", "id", "email", "userName")
.contentType(contentType))
.andExpect(status().isOk())
.andReturn();
ModelAndView mav = result.getModelAndView();
// mav is NULL here after I extend WebMvcConfigurationSupport class.
}
}