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