Istanbul 结合Mocha 代码覆盖率新手踩坑

2018-09-19  本文已影响0人  宋阿茶

系统:WIN 10

开发工具:WebStorm

    听大佬说前端现在也要注重代码测试,所以在各种说服自己要积极向上的背景下,决定将新接的项目加入测试模块 Mocha 。同时入手代码覆盖率工具Istanbul。我们的目标有两个:1.  Mocha + Istanbul 测试公用方法;2.  Mocha + Istanbul + express 测试路由。

一、Mocha + Istanbul 测试公用方法

上图:

    先看项目结构:由于我们公司的习惯吧,我们的项目现在都是前后端分离的了,但是前端会引入一个 server 服务层,我准备将单元测试主要放在我们的 server 端。

项目结构

首先,Mocha 走起来:

仅有mocha

然后,代码覆盖率demo走起来:

很好,coverage目录有了

然后,就是 Istanbul 结合 Mocha 啦:

emmm ??? 换个方式试试??emmm  好像也不对

emmmm  在我百思不得其解以及满天找原因的时候,在阮老师的blog评论区找到了答案:

对,就是这个,感谢大佬分享一波 get   -P


二、 Mocha + Istanbul + express 测试路由

继续来看目录结构2333:

先要说一波 supertest 和 superagent 。他们的 API 是一模一样的。superagent 是用来抓取页面用的,而 supertest,是专门用来配合 express (准确来说是所有兼容 connect 的 web 框架)进行集成测试的。

先来看 app.js :

再来测试代码:

噢噢,重要的一个,package.json 还没列出来,这个很重要:

跑起来

emmm  有没有发现控制台打印出来的东西不太对,没有代码覆盖率的统计,此时的coverage也有点不太对头。

在大佬的帮助下,发现原来是没有关 app ,加个 after 钩子:

after(function () {

    app.close();

});

出现这个感觉应该快成功了,毕竟 coverage 目录的代码覆盖率都已经出来了2333,莫名觉得安慰

    这个时候,就去看看端口有没有被占用啦,我之前只看任务管理器,把 node.js 服务都关掉,但是有时候还是没太多用,以至于对自己产生了深深的怀疑。

参考一波:( windows 下)

netstat -ano | findstr 3030

tasklist | findstr 3030

taskkill -PID <进程号> -F

上一篇下一篇

猜你喜欢

热点阅读