npm install -g mocha
安裝Mocha >= v3.0.0,npm的版本應該>=v1.4.0。除此,確保使用Node.js的版本>=v0.10來運行Mochajavascript
先fork代碼到本身倉庫,而後clone下來。安裝依賴:html
git clone url npm i npm test(package.json中的script) // 執行mocha
使用nodejs的斷言assert, 下面是一個最基本的例子:
···java
var assert = require('assert') describe('Array', function() { describe('#indexOf()', function() { it('should return -1 when the value is not present', function() { assert.equal(-1, [1, 2, 3].indexOf(5)/* 填空題 */) }) }) })
···node
-瞭解 Node assert 的用法 文檔http://nodejs.cn/api/assert.htmljquery
assert.deepStrictEqual(actual, expected[, message]) // 判斷深度 {a:{a:1}} == {b:{c:1}}} assert.strictEqual(actual, expected[, message]) // 判斷相等 === assert.notStrictEqual(actual, expected[, message]) //判斷不等 === assert.ok(value[, message]) // 是否爲真 assert.throws(()=>{ throw new Error(error) },Error,'不符合預期的錯誤') // 拋出錯誤
以上是幾個經常使用的assert 斷言。linux
異步的代碼如何使用斷言呢?git
describe('jquery', function() { describe('異步斷言測試', function() { it('異步須要執行回調done()', function() { $.ajax({ url:"a.html", success:function(){ done(); } }) }) }) })
使用mocha測試異步代碼是再簡單不過了。只須要在測試完成的時候調用一下回調函數便可。經過添加一個回調函數(一般命名爲done)給it()方法,Mocha就會知道,它應該等這個函數被調用的時候才能完成測試。github
此外Mocha提供了一些鉤子函數:before(),after(),beforeEach()和afterEach()。這些鉤子函數能夠用於設置測試的先決條件或者對測試進行清理。ajax
describe('hooks', function() { before(function() { // 在這個區塊內的全部測試以前運行 }) after(function () { // 在這個區塊內的全部測試以後運行 }) beforeEach(function () { // 在這個區塊內的每一個測試運行以前運行 }) afterEach(function () { // 在這個區塊內的每一個測試以後運行 }) })
測試能夠出如今before,after或者和你的鉤子函數交替出現。鉤子函數會按照它們被定義的順序運行。通常就是,before()(只運行一次)->beforeEach()->afterEach()->after()(只運行一次)。chrome
mocha的命令的基本選項:
Options: -h, --help 輸出幫助信息 -V, --version 輸出mocha的版本號 -A, --async-only 強制全部的測試用例必須使用callback或者返回一個promise的格式來肯定異步的正確性 -c, --colors 在報告中顯示顏色 -C, --no-colors 在報告中禁止顯示顏色 -g, --growl 在桌面上顯示測試報告的結果 -O, --reporter-options <k=v,k2=v2,...> 設置報告的基本選項 -R, --reporter <name> 指定測試報告的格式 -S, --sort 對測試文件進行排序 -b, --bail 在第一個測試沒有經過的時候就中止執行後面全部的測試 -d, --debug 啓用node的debugger功能 -g, --grep <pattern> 用於搜索測試用例的名稱,而後只執行匹配的測試用例 -f, --fgrep <string> 只執行測試用例的名稱中含有string的測試用例 -gc, --expose-gc 展現垃圾回收的log內容 -i, --invert 只運行不符合條件的測試用例,必須和--grep或--fgrep之一同時運行 -r, --require <name> require指定模塊 -s, --slow <ms> 指定slow的時間,單位是ms,默認是75ms -t, --timeout <ms> 指定超時時間,單位是ms,默認是200ms -u, --ui <name> 指定user-interface (bdd|tdd|exports)中的一種 -w, --watch 用來監視指定的測試腳本。只要測試腳本有變化,就會自動運行Mocha --check-leaks 檢測全局變量形成的內存泄漏問題 --full-trace 展現完整的錯誤棧信息 --compilers <ext>:<module>,... 使用給定的模塊來編譯文件 --debug-brk 啓用nodejs的debug模式 --es_staging 啓用所有staged特性 --harmony<_classes,_generators,...> all node --harmony* flags are available --preserve-symlinks 告知模塊加載器在解析和緩存模塊的時候,保留模塊自己的軟連接信息 --icu-data-dir include ICU data --inline-diffs 用內聯的方式展現actual/expected之間的不一樣 --inspect 激活chrome瀏覽器的控制檯 --interfaces 展現全部可用的接口 --no-deprecation 不展現warning信息 --no-exit require a clean shutdown of the event loop: mocha will not call process.exit --no-timeouts 禁用超時功能 --opts <path> 定義option文件路徑 --perf-basic-prof 啓用linux的分析功能 --prof 打印出統計分析信息 --recursive 包含子目錄中的測試用例 --reporters 展現全部可使用的測試報告的名稱 --retries <times> 設置對於失敗的測試用例的嘗試的次數 --throw-deprecation 不管任什麼時候候使用過期的函數都拋出一個異常 --trace 追蹤函數的調用過程 --trace-deprecation 展現追蹤錯誤棧 --use_strict 強制使用嚴格模式 --watch-extensions <ext>,... --watch監控的擴展 --delay 異步測試用例的延遲時間
更多mocha 相關參考 《https://segmentfault.com/a/11...》 裏面介紹的比較詳細。
在test目錄添加mocha.opts文件:
--require should // mocha在執行的時候回引入shouldjs
sholdjs的經常使用的幾個:
a.should.equal(b) //判斷相等 (5).should.be.exactly(5).and.be.a.Number() // should.throws(block, [error], [message]) // 捕獲錯誤
具體更多斷言參考 http://shouldjs.github.io/
打開 : <https://www.travis-ci.org/> 登陸GitHub帳號 受權
在項目根目錄添加.travis.yml文件
language: node_js //執行的語言 node_js: - "8.9.4" // 版本 before_script: // 鉤子 有before 確定就有after - npm install -g mocha
這樣當你提交代碼以後 travis就會自動運行測試 發送報告到你的郵箱
參考 《https://www.jianshu.com/p/66d...》
我的理解就是把咱們測試過程當中編寫的測試用例,經過它調用瀏覽器來運行這些測試用例,而後再聚集測試結果,生成測試報告!
須要注意的就是 travis 的虛擬機沒有chrome ,因此須要進行配置
language: node_js node_js: - "8.9.4" before_script: - npm install -g karma-cli - "export DISPLAY=:99.0" - "sh -e /etc/init.d/xvfb start"