1. 问题描述
今天在测试之前已经写好的接口,运行以前能正确启动的测试代码时,响应码显示200,但是没有返回结果。然后在接口入口处写了输出语句,也没有打印出来。这是怎么了,怎么就不行了呢?
2. 原因
其实,原因很简单,就是请求被拦截了。项目设计就是在访问接口前,会对参数进行校验,只有校验成功才能进入接口。而我执着于接口和测试代码之间,迟迟没找到原因。然后在群里问了问,汪洋师兄提醒了我一句,用postman测一下看看。然后,用postman测之后,看到返回码,根据返回码找到程序返回的地方,参数校验失败直接拦截了请求。哇,知道真相的我眼泪掉下来!!!
3. 总结
这次的问题也不是什么疑难杂症,还是自己在工作的环节出了问题,遇到问题看的面窄,没有就这个问题想到项目中的其他模块,其实拦截这个问题在进行接口开发的时候自己就知道了,只是这次遇到这个问题的时候没想到这一块。还有就是,工具不经常使用导致遇到问题的时候想不起来。重要的是,遇到问题还是得有一套自己的处理逻辑,这个真的要在平时的工作中积累。
简单记一下,以后测试接口时,下面两步不要反了:
(1) 先使用工具测试接口是否可以连通,如Postman
(2)如有必要,再写测试代码
4. 心得
今天在群里抛出了自己写的代码,群里的大佬们也给出了很多意见,后面还有很多要改进的地方,主要的几点记录一下:
(1)少用sout,尽量用断点调试或者是日志(写代码,我们是专业的)
(2) 能用工具类的尽量用工具类,如关闭IO流时,可以使用IOUtils(站在巨人的肩膀上)
(3) 开发测试接口时,使用MockMvc这种专门用老测试的工具(做到极致的专业)
以下是汪洋师兄分享的关于controller测试的学习链接:
https://spring.io/guides/gs/testing-web/
https://www.cnblogs.com/wade-xu/p/4311657.html
(4)试着去习惯try-with-resource的用法吧(接收并适应新东西)
下面是汪洋师兄分享的关于try-with -resource学习链接:
https://blog.csdn.net/weixin_42447959/article/details/81192098