首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MockMvc测试返回404,而不是url中没有前导"/“的200

MockMvc是Spring框架提供的一个用于测试Spring MVC应用程序的工具。它可以模拟HTTP请求和响应,并提供了一组用于验证控制器行为的断言方法。

当使用MockMvc进行测试时,有时会遇到返回404而不是期望的200状态码的情况。这可能是由于以下原因导致的:

  1. 路径错误:首先,需要确保测试中使用的URL路径与实际的控制器路径匹配。如果路径不正确,MockMvc将无法找到相应的控制器方法,并返回404状态码。可以通过检查URL路径是否正确来解决此问题。
  2. 控制器方法不存在:如果测试中使用的URL路径是正确的,但控制器方法不存在,那么MockMvc将无法找到相应的方法并返回404状态码。确保控制器中存在与测试路径匹配的方法。
  3. 请求方法不匹配:另一个可能的原因是测试中使用的请求方法与控制器方法不匹配。例如,如果控制器方法使用了POST请求,而测试中使用了GET请求,那么MockMvc将返回404状态码。确保测试中使用的请求方法与控制器方法一致。
  4. 缺少必要的请求参数:某些控制器方法可能需要特定的请求参数才能正常工作。如果测试中没有提供这些必要的请求参数,控制器方法可能无法执行,并返回404状态码。确保测试中提供了所有必要的请求参数。

如果以上步骤都没有解决问题,可以考虑使用MockMvc的debug功能来进一步调试。通过在测试代码中添加.andDo(MockMvcResultHandlers.print()),可以查看MockMvc的详细日志输出,以便更好地理解为什么返回404状态码。

对于MockMvc测试返回404的问题,可以参考腾讯云的Serverless云函数产品SCF(Serverless Cloud Function)。SCF是一种无服务器计算服务,可以帮助开发者在云端运行代码,无需关心服务器的管理和维护。使用SCF可以轻松构建和测试基于云计算的应用程序,并且具有高可用性和弹性扩展的优势。

腾讯云SCF产品介绍链接:https://cloud.tencent.com/product/scf

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SpringBoot基础之MockMvc单元测试

SpringBoot创建Maven项目中,会默认添加spring-boot-starter-test依赖。在《5分钟快速上手SpringBoot》编写单元测试使用了MockMvc。...本篇文章就围绕MockMvc在SpringBoot使用进行讲解。 什么是Mock 在面向对象程序设计,模拟对象(英语:mock object)是以可控方式模拟真实对象行为假对象。...,在测试之前可能需要初始化); 真实对象是用户界面,或包括用户界面在内; 真实对象使用了回调机制; 真实对象可能还不存在; 真实对象可能包含不能用作测试不是为实际工作)信息和方法。...进行MockMvc实例化时需在SpringBoot启动类上添加组件扫描package指定,否则会出现404。...,添加结果处理器,比如示例打印;andReturn,返回验证成功后MvcResult,用于自定义验证/下一步异步处理。

11.4K21

这可能是解决你Spring MVC接口漏洞百出关键

前言 在 Java 开发接触开发者大多数不太注重对接口测试,结果在联调对接中出现各种问题。...也有的使用 Postman 等工具进行测试,虽然在使用上没有什么问题,如果接口增加了权限测试起来就比较恶心了。所以建议在单元测试测试接口,保证在交付前先自测接口健壮性。...MockMvc 测试 集成测试时,希望能够通过输入 URL 对 Controller 进行测试,如果通过启动服务器,建立 http client 进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便...假如我们期望接口/foo/user返回是JSON,并且 HTTP 状态为200,同时响应体包含了version=v1值,我们应该这么声明: ResultMatcher.matchAll(MockMvcResultMatchers.status...所以 CRUD 不是完全没有技术含量,高质量高效率 CRUD 往往需要这种工程化单元测试来支撑。好了今天分享就到这里,我是:码农小胖哥,多多关注,多多支持。

99221

Restful API详解

Restful API特点 用URL描述资源。 使用HTTP方法描述行为,使用HTTP状态码表示不同结果。 使用json交互数据。 Restful只是一种风格,并不是强制标准。...Level 2:使用HTTP方法进行不同操作,使用HTTP状态码来表示不同结果。 Level 3:使用超媒体,在资源表达包含了链接信息。需要注意是,在我们实际工作,并没有达到这个级别。...@ResponseBody:表示方法返回值直接以指定格式写入Http response body不是解析为跳转路径。...在某一些请求返回JSON,我们并不希望返回某些字段,而在另一些请求需要返回某些字段。...比如我们在上面的代码我们希望调用查询user集合只返回name,查询每一个user返回是name和password。我们可以在User类中使用接口方式定义过个返回视图。

2.2K30

Spring+SpringMVC+MyBatis+easyUI整合优化篇(五)结合MockMvc进行服务端单元测试

github地址 为什么使用MockMvc? 可能我们在测试控制层代码都是启动服务器,在浏览器输入URL,然后开始测试是否达到预期效果,发生错误的话,修改相关代码并重启服务器再次进行测试。...分析一下这个过程,启动服务器-->打开浏览器-->输入URL-->等待返回结果-->修复bug-->重启服务器.....循环。...MockMvc单元测试实例 MockMvc测试过程: 1、创建请求 2、设置参数(这一步其实可以设置很多参数,MockMvc提供了丰富方法,但是本例只是简单参数设置,因为方法都较简单,并没有复杂调用...即为后端成功相应 //返回数据 } } 总结 如果你还是习惯于启动tomcat服务器,然后在浏览器输入地址测试的话,也未尝不可,方法在上面,已经写好了,使不使用还是要看个人习惯...以上测试都是针对本项目的简单测试,应该都不是很复杂,很容易上手,后面如果有复杂测试的话,再进行深入讲解,想要深入了解SpringMVCMockMvc测试的话可以自行搜索相关教程。

63440

使用MockMVC进行Controller单元测试

引入 由于MockMVC是Spring框架自带测试组件,因此只要在项目中引入spring-boot-starter-test这个测试套件就可以使用Spring-test库MockMVC了。.../数据格式 ).andExpect(status().isOk()) //返回状态是200 .andDo(print())...response状态进行断言(200),并打印请求和响应 5)对响应结果进行断言(json) 来看一下用例执行过程,通过print()方法打印请求和响应 MockHttpServletRequest...- Completed initialization in 6 ms 可以看到,由于整个测试过程只将被测controller注入到了Spring容器,容器启动过程是非常快速。...@RequestParam进行了测试(感兴趣读者可以尝试调用接口时不提供id=1入参) 3)对接口返回进行了断言 4)对接口返回对象反序列化进行了断言 下一篇将介绍如何使用MockMvc进行集成测试

5.3K10

单元测试(Spring)

单元测试是指对软件最小可测试单元进行检查和验证,是软件开发过程要进行最低级别的测试活动,软件独立单元将在与程序其他部分相隔离情况下进行测试。...例如:测试找不到控制器,404测试、验证请求参数绑定、验证请求参数验证失败、JSON请求、响应异常处理等等。 普通测试 普通测试是将整个大模块整体一起测试。...,不同地方就是Controller是使用mockMvc对象来模拟Controler被测方法,而在Service单元测试则是直接调用Service方法。...修饰返回值为 java.util.Collection公共静态方法,并在此方法初始化所有需要测试参数对; (5)编写测试方法,使用定义变量作为参数进行测试。...null,没有对方法调用返回值做模拟 模拟方法调用返回值 1 Mockito.when(mockedList.get(0)).thenReturn("first"); 2

4.7K10

重学SpringBoot系列之Mockito测试

---断言 .andExpect(MockMvcResultMatchers.status().isOk()) //HTTP:status 200 //可以取出返回结果值和期望值进行比较...---- @Transactional 该注解加在方法上可以使单元测试进行事务回滚,以保证数据库表没有测试造成垃圾数据,因此保证单元测试可以反复执行; 但是笔者不建议这么做,使用该注解会破坏测试真实性...注解属性赋值逻辑准确性 测试数据不是真实场景存在问题 测试,单个事务准备数据,无法在多线程中共享。...---断言 .andExpect(MockMvcResultMatchers.status().isOk()) //HTTP:status 200 //可以取出返回结果值和期望值进行比较...表示程序真正去执行了MockBean模拟行为,不是调用真实对象方法。

2.4K20

Spring集成TestNG测试MVC Controller

在项目中需要写单元测试,如何保证写单元测试质量是比较高。有以下几个原则。 编写具有确定性结果测试用例。 代码中使用断言,不是System.out.print语句输出结果,然后人工验证。...; //这里可以执行初使化数据脚本, 如果没有,也可以不执行这个方法 SysUserControllerTest() { executeSql("sql/mysql/...//执行完成后断言 andReturn(); //执行完成后返回相应结果 String content = result.getResponse()....Assert.assertEquals(jsonObject.get("code"), "200"); } } 上面的代码需要关注点有下面几个: 1: 如果spring配置文件里有...不是打印相应信息。 5:实际项目中可以参考使用H2内存数据库,这样写sql有什么问题,测试用例也能够尽快发现。

1.1K30

录制回放实现测试用例自由

以后点点点就OK了 在本小节,将介绍如何通过拦截HTTP请求,通过录制方式形成测试用例 首先,我们来尝试一下如下一个简单场景 1)调用MeterSphere某个无参GET接口 2)录制该接口请求和返回...这样,我们拿到了一次HTTP服务接口测试所需数据 1)服务URL 2) 服务类型 3)预期结果 测试用例 来写一个测试用例验证一下 package io.metersphere.controller...(get("/anonymous/hello")) .andExpect(status().isOk()) //返回状态是200...此外,还在原先GET方法处理基础上,对POST方法也提供了处理。 这里提醒读者注意是,由于在切面抓取到入参是一个Object [], 实际上真正POST请求参数是一个登录对象。...可以看到status =200,请求返回带有success=true字样,说明admin用户成功登录了。 这说明POST请求也成功被拦截和录制回放了。

1.4K30
领券