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

Share:
25,158
Joschi
Author by

Joschi

BY DAY: Java Developer BY NIGHT: Sleeping FOR FUN: Kitesurfing, Fitness

Updated on July 23, 2022

Comments

  • Joschi
    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
    KIRAN KUMAR MATAM over 6 years
    i am getting error at post method . its aksing to create post method what did i miss
  • rajadilipkolli
    rajadilipkolli over 6 years
    Hey @KIRANKUMARMATAM can you provide more context to it?
  • Vijay
    Vijay almost 5 years
    KIRAN KUMAR MATAM You need to import it. import static org.springframework.test.web.servlet.request.MockMvcRequestB‌​uilders.post;