Spring RestController + Junit Testing
25,158
You need to add annotation @EnableWebMvc
for @RestController
to work, this is missing from your code, adding this will solve the issue
Author by
Joschi
BY DAY: Java Developer BY NIGHT: Sleeping FOR FUN: Kitesurfing, Fitness
Updated on July 23, 2022Comments
-
Joschi almost 2 years
I'm playing around with spring-test of springframework. My intention is to test the following POST method in my rest controller:
@RestController @RequestMapping("/project") public class ProjectController { @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) public Project createProject(@RequestBody Project project, HttpServletResponse response) { // TODO: create the object, store it in db... response.setStatus(HttpServletResponse.SC_CREATED); // return the created object - simulate by returning the request. return project; } }
This is my test case:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {ProjectController.class }) @WebAppConfiguration public class ProjectControllerTest { private MockMvc mockMvc; @Autowired private WebApplicationContext wac; @Before public void setUp() { mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); } @Test public void testCreationOfANewProjectSucceeds() throws Exception { Project project = new Project(); project.setName("MyName"); String json = new Gson().toJson(project); mockMvc.perform( post("/project") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON) .content(json)) .andExpect(status().isCreated()); } }
When I execute it I get Status Code 415 instead of 201. What am I missing? A simple GET request works.
-
KIRAN KUMAR MATAM over 6 yearsi am getting error at post method . its aksing to create post method what did i miss
-
rajadilipkolli over 6 yearsHey @KIRANKUMARMATAM can you provide more context to it?
-
Vijay almost 5 yearsKIRAN KUMAR MATAM You need to import it. import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;