网站后端一般从下往上有Entity层(对应DB table) —> Dao层(对应DB table增删改查各种操作)—> Service层(业务逻辑层,调用dao层和DB打交道) —> Controller层(对应http api urls,调用service)。
前后端分离开发的话,后端必须做到充分的自测,才能保证前后端联调时不出大问题。如果Dao层使用JPA的话,其实不需要测试,除非用错了。那么,针对entity层和service/controller层,后端开发时怎么自测一直是个问题萦绕在我心头。
现在这个问题的两个部分全部找到了答案,有种打通了任督二脉的快感,实际上是察觉到,方法论和工具层面,不管是开发还是测试,是相通的。以往自己的技能图是这一块,那一块,现如今块与块之间融会贯通起来了,点滴积攒外加思索,终归会形成全局观。entity层的测试方案请见上篇博文:构建HibernateUtil测试Entity层代码 本篇会就service/controller层测试给出我认为适合我们项目的解决方案。
首先,我研究了一天半SpringBoot框架里面自带的Test模块。确实,使用MockMvc再配合各种注解可以在unit test里去启动SpringBoot App(或者某个要测试的controller类),然后发送request(可以带参)验证response。然而我们的后台有加session拦截器,不带着合法sessionId过来的request会被deny。接着我又去研究怎么样先登录,拿到服务器种的SessionID&