現在、コントローラーをテストするために MockMVC で単体テストを作成しています。コントローラー自体は正常に動作しますが、これを証明するためのテストを作成するのに苦労しています。
以下に、問題を再現するための簡単な例を作成しました。
マイコントローラー
@RestController
@RequestMapping(value = "/controller")
public class TestController {
private final Logger LOG = LoggerFactory.getLogger(this.getClass());
/**
* Resets the system including re-creation of the actor system and reload of
* application configuration
*
* @param testObject
* @return
*/
@RequestMapping(value = "/testPost", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public void test(@RequestBody TestObject testObject) {
}
私のテスト
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = {TestController.class})
public class TestControllerTest {
private MockMvc mockMvc;
private final static ObjectMapper MAPPER = new ObjectMapper();
public TestControllerTest() {
}
@Test
public void testJSONPost() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(new TestController()).setMessageConverters(new MappingJackson2HttpMessageConverter()).alwaysDo(print()).build();
mockMvc.perform(post("/controller/testPost").content(MAPPER.writeValueAsString(new TestObject(Long.MIN_VALUE, "value")))
.contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
}
テストを実行すると、400 の http 応答が返されます。あなたが提供できる洞察は有益です、ありがとう。