title: Spring MVC Test Framework - Unsupported Media Type
body: <p>I am writing a test for controller using spring test mvc framework. I am trying to test a post request and it produces JSON. The actual code is running but test is failing.</p>
  
  <p>I an getting the error Status expected 200 but getting 415 which means unsupported media type. i check all examples on net and it seems my implementation is correct. please help me out.</p>
  
  <p>MyTestcase TestStringPost() is running successfully but TestJSONPost is failing. </p>
  
  <p>I am using Spring 3.2</p>
  
  <p>My Controller</p>
  
  <pre><code>@Controller
  public class HomeController {
  
  
  @RequestMapping(value = "/v1/checkstringvalue", method = RequestMethod.POST, produces = "application/json")
  public @ResponseBody void testStringPost(@RequestBody String value) {
      logger.info("Welcome home! The client locale is {}.");
  }
  
  @RequestMapping(value = "/v1/checkjsonvalue", method = RequestMethod.POST, produces = "application/json")
  public @ResponseBody String testJSONPost(@RequestBody Map&lt;String, String&gt; userMap) {
      System.out.println("Inside test jsonpost controller");
      logger.info("Welcome home! The client locale is {}.");
      return "Success";
   }
  }
  </code></pre>
  
  <p>This is my Test Controller</p>
  
  <pre><code>@RunWith(SpringJUnit4ClassRunner.class)
  @ContextConfiguration
  @WebAppConfiguration
  public class HomeControllerTest {
  
  
  @Autowired
  private WebApplicationContext wac;
  
  private MockMvc mockMvc;
  
  private static final String PROVIDER_A = "PROVIDER_A";
  
  public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(
          MediaType.APPLICATION_JSON.getType(),
          MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));
  
  @Configuration
  public static class TestConfiguration {
  
      @Bean
      public HomeController simpleController() {
          return new HomeController();
      }
  }
  
  @Before
  public void setup() {
      mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
  }
  
  @Test
  public void testStringPost() throws Exception {
  
      final String createJson = "hello";
  
      ResultActions resultActions = mockMvc.perform(post(
              "/v1/checkstringvalue").contentType(MediaType.TEXT_PLAIN)
              .content(createJson));
  
      resultActions.andDo(print());
      resultActions.andExpect(status().isOk());
  }
  
  @Test
  public void testjsonPost() throws Exception {
  
      System.out.println("Inside testjsonpost");
      final String createJson = "{\"name\":\"hello\",\"email\":\"hello@example.com\"}";
  
      ObjectMapper objectMapper = new ObjectMapper();
      ObjectNode userJson = objectMapper.createObjectNode();
      userJson.put("name", "tarun");
      userJson.put("email", "tarun@gmail.com");
  
      ResultActions resultActions = mockMvc
              .perform(post("/v1/checkjsonvalue")
                      .contentType(APPLICATION_JSON_UTF8)
                      .accept(APPLICATION_JSON_UTF8)
                      .content(objectMapper.writeValueAsBytes(userJson)));
  
      resultActions.andDo(print());
      resultActions.andExpect(status().isOk());
  }
  }
  </code></pre>