SpringBootTest ,content() 函数已经随 sprint-test 5.2.6 一起消失了



我正在尝试做类似的事情:

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());

有人可以帮忙吗,我在网络上找到的所有示例都指向使用 content(..( 方法

根据文档,Spring Test 5.2.6 中应该仍然有.content()方法。

您的代码可能发生的情况是,您从org.springframework.mock.http.server.reactive.MockServerHttpRequest.post导入了MockMvcRequestBuilders的反应式版本,这确实没有.content()方法,而只有.body()

因此,请确保您在测试中导入 servlet 版本:

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());
}
}

最新更新