開發類型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' // 終端輸出文字總結
}]
}複製代碼