mocha測試
1/ 全局安裝mocha環境 npm install --global mocha
package.json的基本配置{ "name": "mocha-demos", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [ "testing", "Mocha" ], "author": "", "license": "MIT", "devDependencies": { "babel-core": "~6.2.1", "babel-preset-es2015": "~6.1.18", "chai": "~3.4.1", "mocha": "~2.3.4", "mochawesome": "~1.2.1" }, "dependencies": { "node-fetch": "~1.3.3", "superagent": "~1.4.0" } }
安裝依賴 npm i
測試單元的編寫-測試單元函數模塊暴露 module.exports 文件名eg:index.js
測試腳本的編寫--文件名字 eg:index.test.js
測試腳本--接收require要測試的單元,引入斷言庫chai依賴的expect斷言風格
describe塊稱爲"測試套件"(test suite),表示一組相關的測試。它是一個函數,第一個參數是測試套件的名稱("加法函數的測試"),第二個參數是一個實際執行的函數。
it塊稱爲"測試用例"(test case),表示一個單獨的測試,是測試的最小單位。它也是一個函數,第一個參數是測試用例的名稱("1 加 1 應該等於 2"),第二個參數是一個實際執行的函數。
頭部是expect方法,尾部是斷言方法,好比equal、a/an、ok、match等。二者之間使用to或to.be鏈接。
斷言,就是判斷源碼的實際執行結果與預期結果是否一致,若是不一致就拋出一個錯誤html
測試 mocha index.test.js 能夠同時測試多個案例
一般狀況下將全部 測試文件放在test文件夾下,輸入mocha能夠進行全部並列測試文件的執行
若是 test文件夾下有另外的文件夾 須要執行測試文件 輸入mocha --recursive 這樣不論test下多少文件,均可以被執行
通配符mocha test/{a,b}.js 執行測試test下的a,b文件
通配符mocha typ/a/*.js 執行測試test下的a文件下的全部測試文件
展現效果
mocha --reporter 默認spec 還能夠設置爲 tap/dot/nyan/landing/list/progress/JSON/JSON stream/min/doc等
使用模版
npm install --save-dev mochawesome
mac 專用 ../node_modules/.bin/mocha --reporter mochawesome
生成mochaawesome-reports目錄 查看html文件便可
tips:windows下須要安裝全局環境 npm i -g mochawesome --save-dev 而後在相應文件夾下 執行 mocha --reporter mochawesome
監聽測試: mocha --watch/mocha -w
--bail, -b 指定只要有一個測試用例沒有經過,就中止執行後面的測試用例
--grep, -g用於搜索測試用例的名稱(即it塊的第一個參數),而後只執行匹配的測試用例。
--invert, -i表示只運行不符合條件的測試腳本,必須與--grep參數配合使用。eg:mocha --grep "1+1是等於2" --invert
配置 在test目錄下新建mocha.opts文件 寫入--reporter tap --recursive 配置 執行mocha 便可運行以上指令
es6
若是測試腳本使用的是es6語法編寫的 按如下步驟操做node
第一步 安裝Babel依賴 npm install babel-core babel-preset-es2015 --save-dev
第二步 在項目目錄下面,新建一個.babelrc配置文件。寫入配置 {"presets": [ "es2015" ]}
第三步 使用--compilers參數指定測試腳本的轉碼器;測試 ../node_modules/mocha/bin/mocha --compilers js:babel-core/register
上面代碼表示,運行測試以前,先用babel-core/registeres6