You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constexpress=require('express');constpath=require('path');constapp=express();varport=process.env.PORT||3000;app.use('/style',express.static(path.resolve(__dirname,'../style')));app.use('/dist',express.static(path.resolve(__dirname,'../dist')));app.use('/src',express.static(path.resolve(__dirname,'../src')));app.get('/',(req,res)=>{res.sendFile(path.join(__dirname,'index.html'));});// Listapp.get('/pagination',(req,res)=>{res.sendFile(path.join(__dirname,'/pagination/test.html'));});app.listen(port,function(){console.log(`app listening on port http://127.0.0.1:${port}`);});
前言
不是为了测试而测试,测试的目的是在于提高代码质量、降低错误。
测试的类型:
单元测试 + 持续集成:mocha + travis-ci
Demo: addKey
编写测试用例:为数组类型的每一项添加新的键值对,并过滤子项:
在
package.json
设置好npm script test
测试钩子,在自己本地测试通过后再提交到 github。travis-ci 集成
打开 Travis 的官网,用你的 Github 账号登录之后,就可以打开 github 中的项目
addKey
将它托管到平台上。紧接着在根目录中创建.travis.yml
文件,这个文件被称为 Travis 的配置文件,用来描述告诉工具在你提交代码之后如何执行集成工作。(官方文档)我们每次提交代码到 github,Travis CI 会检查 github 项目并发到
https://travis-ci.org/
进行多版本测试, 当单个项目实例构建完成($ npm install
)后,会自动执行$ npm test
钩子来校验代码的正确性。如果所有的版本实例都测试通过就会显示构建成功的徽章,否则则会发送右键告诉我们构建失败的原因(也可以进入官网的构建错误的实例进行查看失败原因)构建结果:
功能测试:mocha+nightmare
进行完整的页面级别功能测试,需要使用 nightmare , 它依靠
electron
作为项目运行的容器进行测试。解决国内安装
electron
困难的方法:ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/" npm install nightmare -D
其他依赖项:
测试一个分页组件是否成功渲染
scripts 命令编写
启动页面测试的 node 环境入口文件, http://127.0.0.1:3000/pagination 为分页组件渲染结果
测试方法,组件是否渲染成功,仅测试
http
连接是否成功测试
测试覆盖率 + 持续集成:codecov + travis-ci
在有了上面的单元测试持续集成的底子,我们再来为代码加入测试覆盖率的徽章,它将有效不打折扣的反应测试的实际质量.
Demo: rainbow-utils
在
package.json
中设置好测试用的钩子函数,这次使用的jest
进行单元测试,它比mocha
更为强大.npm run test
:将反应测试的通过情况npm run coverage
:将反应测试覆盖率的实际情况我们运行后查看本地执行后测试覆盖率的情况:
此刻我们的 code 有 61%都有覆盖到测试用例并成功通过,运行完成之后你就会发现你的目录中多了一个 coverage 的目录,打开它,里面有两个关键信息我们会用到一个是
coverage-final.json
文件里面是测试的结果文件,另外一个找到lcov-report/src/index.html
,然后用浏览器打开。 反应的是与上图一致的可视化测试结果页面.下一步,我们将测试结果与
codecov.io
关联起来,就像travis-ci
一样.打开 https://codecov.io 使用 github 登录。找到
Add new repository
按钮,然后选择一个我们的rainbow-utils
repository,这时候系统会给你一个 Upload Token,有了这个 Token 你就能证明你是你了,然后就可以在任何地方凭借着这个 Token 往你的 codecov 中上传报告了。现在我们只要运行:
就可以将你的代码报告上传了。
但是!
每次都需要输入这个 Token 是不是有点不爽?我们能不能让我们的好伙伴 Travis 来解决这个问题?答案是可以的,还记得我们的 Travis 配置么? 我们可以在配置中追加
after_script
当构建完成后的脚本阶段(最后一个自定义钩子)自动帮我们执行 :但是,token 去哪里了呢? 为什么这里不用写呢?那么它是怎么知道我们的权限的呢?
试想如果我们把 Token 写在了配置里面的话,这就意味着每个人都能看到我们的 token 并且能盗用我们的权限,这样做是十分不安全的,所以 Travis 想到了这一点,给了我们一个添加系统变量的机会。
想要设置当个项目的系统变量,你需要打卡 Travis 网站的单个 repository 实例中 ,找到
Setting
下的Environment Variables
栏目,把你的 Token 填入, NAME 为CODECOV_TOKEN
,VALUE 为 Token 值,点击最后的Add
添加按钮.这样,Travis 在每次运行 upload-coverage 的时候,就能自动的填入 Token 了。
大功告成!
构建结果:
参考链接
The text was updated successfully, but these errors were encountered: