SpringBootTest, функция content () ушла с sprint-test 5.2.6 - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь сделать что-то похожее на:

mockMvc
  .perform(post("/forums/{forumId}/register", 42L)
  .contentType("application/json")       
  .param("sendWelcomeMail", "true")
  .content(objectMapper.writeValueAsString(user)))             
  .andExpect(status().isOk());

Но метод .content исчез с 5.2.6, теперь есть то, что кажется функцией body ():

mockMvc
   .perform(post("/conversions/ktoc")
   .contentType(MediaType.APPLICATION_JSON)                    
   .body(objectMapper.writeValueAsString(request)). /*missing method to get back to Builder*/                
   .andExpect(status().isOk());

Кто-нибудь может помочь, пожалуйста, все примеры, которые я нахожу в Интернете, указывают на использование метода содержимого (..)

1 Ответ

0 голосов
/ 14 июня 2020

В Spring Test 5.2.6 все еще должен быть метод .content() в соответствии с docs .

Что могло случиться с вашим кодом, так это то, что вы импортируете реактивную версию MockMvcRequestBuilders из org.springframework.mock.http.server.reactive.MockServerHttpRequest.post, и у него действительно нет метода .content(), а только .body().

Поэтому убедитесь, что вы импортируете версию сервлета внутри вашего теста:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest
class PublicControllerTest {

  @Autowired
  private MockMvc mockMvc;

  @Test
  public void testMe() throws Exception {
    this.mockMvc
      .perform(post("/test").content("Some content"))
      .andExpect(status().isOk());
  }

}
...