1

经历断更8个多月后我又回来分享干货了!
笔者去年在公司做了一个E2E的测试项目,当然是基于Mocha开发的一套测试程序,虽然从其中学习到了一些经验但同时因为个人有强迫症所以也发现了Mocha的一个让我很难受的问题: 要么在浏览器端运行,要么在Node端运行...对于我来说这就很难受了,为什么呢?

痛点

首先说明本篇基于 Mocha v3.2.x

在浏览器端使用Mocha虽然可以生成各种炫酷的报表,但是我们只能写基础JavaScript代码,但是涉及到打包、部署或者新语法的情况下,那就可能就有点麻烦了;其次实在Node端,在这里我们就可以各种写各种骚,但是测试结果只是冷冷的命名行显示(原谅笔者没发现别的办法,可能是研究不深入)。所以笔者就开始头脑风暴了,能不能把两者通过打包的方式结合起来使用?

拨开云雾见天日

果然不出所料,在Webpack文档找到了一个牛叉的 mocha-loader. 这就很棒!!!
然后笔者就开始各种研究各种测试,终于搞下了这套心心念念的测试框架

开吹环节

为什么笔者称之为框架? (看什么看?没见过装逼啊?)。因为这套工具已经在实际项目中使用过,现在分享的代码只是基础框架代码,我们可以在此基础上做你想做的扩展,当然只限于接口测试,如果想做E2E之类的页面测试,可能就麻烦了。

设计思路

其实没啥设计思路。就是正常的Mocha接口测试代码调用Node的服务,Node服务做转发功能进而去访问真正的需要测试的接口并给Mocha测试程序返回结果。这样做的好处有两个: 1. 解决了页面接口测试跨域问题;2. Mocha程序(也就是页面)不需要触及目标接口,有利于接口保护。

项目结构

image.png

这里的simple.test.js是一个示范例子, serverjs 就是用来做转发的Node服务。有兴趣的童鞋可以尝试下这套框架,或者它不是最好的,但是它肯定是最帅的。

预告

下一期我们一起来聊聊牛叉的 Selector Pattern
Giao.....


风吹过的夏夜
295 声望31 粉丝

前端工程师