文档章节

前后端分离架构中接口测试最佳实践

dkvirus
 dkvirus
发布于 01/08 16:23
字数 560
阅读 57
收藏 3

背景

你是否遇到过这种情况:前后端分离体系中,后端开发人员通知你接口有改动,前端代码需要做相应调整。but,改了啥没有明确说明,这时候需要一个个页面去点击,一个个按钮去人肉测试,好不费事。

接口变动主要分两种:

  • 接口名称变化(导致接口请求失败);
  • 接口返回的数据结构变化(添字段或者删字段)。

通过编写测试代码,只要输入 npm run test 即可自动测试接口是否正常,这是本文要解决的问题。

tein

读音:[tai-ing](test-interface,取两个单词前两个字符组成),一个简短的接口测试脚本。本来想拿现成的测试框架 Jest 在上面修修改改,后来想了想要做的事非常简单,代码全部码好也不超过 400 行。

思路:

  • 提前写好接口返回数据的数据结构。tein 提供命令行工具 $ tein ui ,会创建一个网页自动转换数据结构;
  • 内部利用 axios 发请求判断接口名称是否变化,请求失败八成是接口名字又改了;
  • 接口请求成功后,将返回值再一次进行数据结构转换,与第一步写好的结构进行对比,判断是否变化。

transform.gif

运行效果如下,有字段修改的会以不同颜色标识出来,方便定位。

dein.gif

如果你的项目也需要对接口进行测试,不妨体验一波。=> tein quick-start

对于 outh2 请求,需要先拿到 token,之后每个请求都需要携带 token 进行请求,tein 也做了相应处理。具体 demo 参考 fixture-object-oauth2 与 issue#1

有更好的处理方式,欢迎下方留言。

© 著作权归作者所有

共有 人打赏支持
dkvirus
粉丝 34
博文 119
码字总数 116803
作品 0
六安
程序员
私信 提问
前后端分离

前后端分离实践有感 前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化 Web 设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层出不...

晨曦艾伯特
2018/01/11
0
0
前后端分离的思考与实践(一)

原文出处:淘宝UED - 常胤 也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离) 前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案...

淘宝UED - 常胤
2014/04/18
0
0
基于NodeJS的全栈式开发

随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本。为了提升开发效率,前后端分...

唐僧他大叔
2015/02/21
0
0
基于NodeJS的全栈式开发(基于NodeJS的前后端分离)【转】

随着不同终端(Pad/Mobile/PC)的兴起,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足用户体验的高要求,我们往往需要针对不同的终端开发定制的版本。为了提升开发效率,前后端分...

程序员诗人
2018/01/19
0
0
前后端分离方案交流,大家发表一下看法

基于NodeJS的前后端分离(此文章来自淘宝) 前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异。痛定思痛,今天我们重新思考...

Koala_考拉
2014/05/26
9.7K
13

没有更多内容

加载失败,请刷新页面

加载更多

Java单例模式学习记录

在项目开发中经常能遇见的设计模式就是单例模式了,而实现的方式最常见的有两种:饿汉和饱汉(懒汉)。由于日常接触较多而研究的不够深入,导致面试的时候被询问到后有点没底,这里记录一下学习...

JerryLin123
昨天
2
0
VSCODE 无法调试

VSCODE 无法调试 可以运行 可能的原因: GCC 的参数忘了加 -g

shzwork
昨天
3
0
理解去中心化 稳定币 DAI

随着摩根大通推出JPM Coin 稳定币,可以预见稳定币将成为区块链落地的一大助推器。 坦白来讲,对于一个程序员的我来讲(不懂一点专业经济和金融),理解DAI的机制,真的有一点复杂。耐心看完...

Tiny熊
昨天
4
0
5.线程实现

用于线程实现的Python模块 Python线程有时称为轻量级进程,因为线程比进程占用的内存少得多。 线程允许一次执行多个任务。 在Python中,以下两个模块在一个程序中实现线程 - _thread 模块 th...

Eappo_Geng
昨天
4
0
ServiceLoader

创建一个接口文件在resources资源目录下创建META-INF/services文件夹在services文件夹中创建文件,以接口全名命名创建接口实现类 内容me.zzp.ar.d.PostgreSQLDialectme.zzp.ar.d.Hype...

Cobbage
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部