1

現在、コントローラーをテストするために 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 応答が返されます。あなたが提供できる洞察は有益です、ありがとう。

4

0 に答える 0