开发类型javascript
// add.js
function add(x, y) {
return x + y;
}
module.exports = add;
// test.js
let add = require('./add.js');
// TDD
assert.equal(add(1, 2), '3');
// BDD
expect(add(1, 2)).to.equal('3');复制代码
测试类型前端
unit test
:应用仔细拆分为一个一个组件(JavaScript中的一个函数/模块/类等),方法,而后针对这些方法进行单个单个的测试e2e test
:ClickButton测试,牵扯到用户行为,须要用浏览器环境测试管理工具/框架/库java
测试框架共性node
按照如下配置完成的项目实例webpack
安装git
npm install better-npm-run --save-dev
:npm script配置加强npm install karma --save-dev
npm install chai karma-chai mocha karma-mocha --save-dev
:安装mocha以及断言chai,配置测试框架npm install babel-core babel-loader babel-preset-env webpack karma-webpack --save-dev
:安装webpack和babel,配置es6/7环境npm install phantomjs@2.1.1 babel-plugin-istanbul karma-phantomjs-launcher --save-dev
:使用虚拟浏览器跑测试npm install karma-coverage --save-dev
:添加代码覆盖率插件运行es6
node ./node_modules/karma/bin/karma start
github
全局安装cli后,能够直接karma start,省去前面长段字符串web
npm install -g karma-cli
npm
配置karma.config.js
以及webpack.config.js
文件
Travis-ci
Coveralls
理解测试管理工具/框架/库之间的联系与区别
在karma
中选择不一样的测试环境(Chrome/PhantomJS...),须要配置相应的plugin
,选择PhantomJS
时,需下载指定的2.1.1
版本,下载最新版phantomjs-prebuilt@2.1.14
时,不只下载易报错(网络问题),并且出现没有PATH
的问题,这样同karma-phantomjs-launcher
插件便没法关联起来,致使虚拟浏览器测试环境没法搭建
配置代码覆盖率时,采用karma-coverage
,而咱们使用webpack及babel
对源码进行了编译,致使代码覆盖率出现不完整的问题,所以须要引入webpack的babel-plugin-istanbul
插件,在配置文件中加入便可
配置持续集成.travis.yml
文件,给 Coveralls 上传的测试报告须要有统一的 lcov 格式,所以在karma.conf.js
文件中配置生成报告类型
coverageReporter: {
dir: 'coverage',
reporters: [{
type: 'json',
subdir: '.',
file: 'coverage.json', // ./coverage目录下生成此文件
}, {
type: 'lcov', // lcov 格式
subdir: '.' // ./coverage目录下生成 lcov.info文件
}, {
type: 'text-summary' // 终端输出文字总结
}]
}复制代码