MockMvc 返回 404 状态

spring

1个回答

写回答

1440013349

2025-06-30 04:30

+ 关注

Spring
Spring

使用MockMvc返回404状态码的文章

在进行Web开发时,我们经常会使用MockMvc来进行单元测试。MockMvc是Spring框架提供的一个用于测试控制器的工具,它可以模拟HTTP请求,使我们能够在不启动服务器的情况下对控制器进行测试。

在某些情况下,我们可能希望测试的接口返回404状态码。404状态码表示所请求的资源不存在。这种情况通常发生在用户请求了一个不存在的URL或者请求了一个不存在的资源。

下面让我们来看一个例子,演示如何使用MockMvc返回404状态码。

1. 首先,我们需要添加所需的依赖。在这个案例中,我们将使用Spring Boot和JUnit来进行测试。在项目的pom.XML文件中添加以下依赖:

XML

<dependency>

<groupId>org.Springframework.boot</groupId>

<artifactId>Spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

2. 接下来,我们需要创建一个测试类。在测试类中,我们将使用MockMvc来模拟HTTP请求,并验证返回的状态码是否为404。下面是一个简单的测试方法:

Java

@RunWith(SpringRunner.class)

@SpringBootTest

@AutoConfigureMockMvc

public class MyControllerTest {

@Autowired

private MockMvc mockMvc;

@Test

public void testNotFound() throws Exception {

mockMvc.perform(get("/not-found-url"))

.andExpect(status().isNotFound());

}

}

在上面的代码中,我们使用@RunWith(SpringRunner.class)注解来指定测试运行器为SpringRunner,使用@SpringBootTest注解来启动Spring Boot应用程序的上下文。@AutoConfigureMockMvc注解会自动配置MockMvc。

在testNotFound()方法中,我们使用mockMvc.perform()方法来发送一个GET请求,请求的URL为/not-found-url,并使用andExpect()方法来验证返回的状态码是否为404。

3. 最后,我们运行测试。如果一切正常,我们将看到测试通过,并打印出如下信息:

MockHttpServletRequest:

HTTP Method = GET

Request URI = /not-found-url

Parameters = {}

Headers = {}

Handler:

Type = null

Async:

Async started = false

Async result = null

Resolved Exception:

Type = org.Springframework.web.servlet.NoHandlerFoundException

MockHttpServletResponse:

Status = 404

Error message = null

Headers = {}

Content type = null

Body =

Forwarded URL = null

Redirected URL = null

Cookies = []

可以看到,测试通过,返回的状态码为404。

通过上述案例,我们学习了如何使用MockMvc返回404状态码。MockMvc是一个非常强大的工具,它可以帮助我们进行控制器的单元测试,提高开发效率。在实际开发中,我们可以根据需要设置不同的状态码,并验证业务逻辑的正确性。

希望本文对你有所帮助,如果您有任何疑问或建议,请随时留言。感谢阅读!

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号