MockMVC - Форма отправки Spring контроллера из выпадающего - PullRequest
0 голосов
/ 26 июня 2018

Может кто-нибудь помочь, как написать mockMVC для контроллера?Я придумал mockMVC, но я застрял и не уверен, как тестировать дальше

Из пользовательского интерфейса

  1. Пользователь выбирает из выпадающего списка и отправляет ли форма с идентификатором выбора в качестве имени(имя @RequestBody String в контроллере)

Мой контроллер

 @PostMapping("/api/user")
public User getSearch(@RequestBody String name) {
    User user=new User();   
    String result=userService.findByUser(name);
    user.setUsername(result);
    return user;

}

My Mock MVC Class

@Autowired
private WebApplicationContext webApplicationContext;

private MockMvc mockMvc;

@Test
public void testUser() throws Exception {
    mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    mockMvc.perform(post("/api/user")
    .accept(MediaType.APPLICATION_JSON))
    .andExpect(status().isOk());
}

Любая помощь будет отличной

1 Ответ

0 голосов
/ 27 июня 2018

Вы были близки.Однако вам не нужно APPLICATION_JSON, поскольку вы только передаете строку.

@Autowired
private YourController yourController;

@Before
public void setup() {
    this.mockMvc = MockMvcBuilders.standaloneSetup(yourController)
            .build();
}

@Test
public void requestBody() throws Exception {
    this.mockMvc.perform(
            post("/api/user")
                .contentType(MediaType.TEXT_PLAIN)
                .content("foobar")
            .andExpect(status().isOk());

Кроме того, добавьте @ResponseBody к вашему методу внутри контроллера.

@Test
public void requestBody() throws Exception {
  this.mockMvc.perform(
    post("/api/user")
    .contentType(MediaType.TEXT_PLAIN)
    .content("foobar")
    .andExpect(status().isOk()).andExpect(content().contentTypeCompatibleWith("application/json"))
    .andExpect(jsonPath("$name", is("foobar")));
...