mockmvc perform content干吗的
时间: 2023-10-27 21:31:37 浏览: 145
MockMvc.perform() 方法是 MockMvc 类的一个方法,用于执行 HTTP 请求并返回对响应的模拟结果。它可以模拟 HTTP GET、POST、PUT、DELETE 等请求。
在测试中,我们可以使用 perform() 方法执行一个请求,并且使用 content() 方法获取响应的内容。通常用于对控制器进行单元测试时,模拟一个 HTTP 请求并验证响应内容是否正确。例如,我们可以使用 perform() 方法模拟一个 POST 请求,并使用 content() 方法获取响应内容,然后断言返回的响应是否符合预期结果。
相关问题
这是我的全部代码package com.system.controller; import com.alibaba.fastjson.JSONObject; import org.junit.Assert; import org.junit.Test; import org.junit.jupiter.api.BeforeEach; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc public class LoginControllerTest { @Autowired private WebApplicationContext context; private MockMvc mockMvc; @BeforeEach public void setUp() { mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); Assert.assertNotNull("mockMvc 对象未正确初始化", mockMvc); } @Test public void testLogin() throws Exception { JSONObject request = new JSONObject(); request.put("username", "user1"); request.put("password", "123456"); mockMvc.perform(MockMvcRequestBuilders.post("/login") .content(request.toJSONString()) .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()); } }
看起来你的代码没有问题,但是你的错误信息是空指针异常。这通常意味着在执行测试时,某些依赖项无法正确加载。请尝试检查您的pom.xml文件是否包含了必需的依赖项,如spring-test和mockito-core等。
另外,您可以尝试使用@Before注解而不是@BeforeEach注解来初始化mockMvc对象。您的代码可能需要进行以下更改:
```
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
Assert.assertNotNull("mockMvc 对象未正确初始化", mockMvc);
}
```
如果您还在遇到问题,请提供完整的堆栈跟踪信息,以便更好地了解问题的根本原因。
mockmvc返回值乱码
您可以尝试在MockMvc请求时设置字符集编码来解决返回值乱码的问题。您可以使用`acceptCharset`方法来设置字符集编码。以下是一个示例代码:
```java
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
// 创建MockMvc对象
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(yourController).build();
// 发起请求并设置字符集编码
mockMvc.perform(MockMvcRequestBuilders.get("/yourEndpoint")
.accept(MediaType.APPLICATION_JSON)
.acceptCharset("UTF-8"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
```
请确保在调用`perform`方法之前设置了`.acceptCharset("UTF-8")`。
阅读全文