Istanbul 结合Mocha 代码覆盖率新手踩坑
系统: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