webpack系列笔记(8)冒烟、单元测试和测试覆盖率
冒烟测试(smoke testing):
冒烟测试是指对提交测试的软件在进行详细深入的测试之前而进行的预测试,这种预测试的主要目的是暴露导致软件需要重新的基本功能失效等严重问题。
单元测试的工具:
mocha
Use // eslint-disable-next-line to ignore the next line.
Use /* eslint-disable */ to ignore all warnings in a file.
const glob = require('glob-all');
describe('Checking generated html files', () => { it('should generate html files', (done) => {
const files = glob.sync([ './dist/index.html', './dist/search.html' ])
if (files.length > 0) { done(); }
else { throw new Error('no html file generated.'); } }) })
const path = require('path');
const webpack = require('webpack');
const rimraf = require('rimraf');
const Mocha = require('mocha');
const mocha = new Mocha();
process.chdir(path.join(__dirname, 'template'));
//进入到template目录
rimraf('./dist', () => { const prodConfig = require('../../lib/webpack.prod.js');
webpack(prodConfig, (err, stats) => { if ( err ) { console.log(err); process.exit(2); }
console.log(stats.toString({ colors: true, modules: false, children: false }))
console.log('Webpack build success, begin mocha test.');
mocha.addFile(path.join(__dirname, 'css-js-test.js'));
mocha.addFile(path.join(__dirname, 'html-test.js')); mocha.run(); }) })
单元测试:
单元测试的接入:
1. 安装mocha + chai
npm i mocha chai -D
2. 新建test目录,并增加xx.test.js文件
3. 在package.json中的scripts字段中添加test命令:
"scripts": {
"test": "node_modules/mocha/bin/_mocha"
}
4. 执行测试命令:
npm run test
持续集成的作用:
优点:
1. 快速发现错误
2. 防止分支大幅偏离主干
核心措施是:代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
目前比较流行的CI: travis CI, Circle CI, jenkins...
接入travis CI:
1. https:// travis-ci.org/ 使用github账号登录
2. 在https:// travis-ci.org/account/responsitories为项目开启
3. 项目根目录下创建.travis.yml
.travis.yml文件内容:
发布npm:
添加用户: npm adduser
升级版本:
升级补丁版本号: npm version patch
升级小版本号:npm version minor
升级大版本号:npm version major
升级版本:npm publish
GIt规范和Changelog生成:
提交格式要求:
本地开发阶段增加precommit钩子:
1. 安装husky npm i husky -D
2. 通过commitmsg钩子校验信息
"scripts": { "commitmsg": "validate-commit-msg", "changelog":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0" }, "devDependencies":{ "validate-commit-msg":"^2.11.1", "conventional-changelog-cli":"^1.2.0", "husky":"^0.13.1" }
遵守semver规范的优势:
语义化版本规范(Semantic Versioning):
先行版本号:
例如:
16.4.0-alpha.3174632
16.0.0-beta.4