單元測試學習總結

Mocha 的安裝和使用

1. 安裝

  • 使用npm全局安裝:
npm install -g mocha

安裝Mocha >= v3.0.0,npm的版本應該>=v1.4.0。除此,確保使用Node.js的版本>=v0.10來運行Mochajavascript

2.簡單的例子

先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...》 裏面介紹的比較詳細。

should.js的使用

在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/

接入travis Ci

打開 : <https://www.travis-ci.org/>
登陸GitHub帳號 受權

clipboard.png

在項目根目錄添加.travis.yml文件

language: node_js   //執行的語言
    node_js: 
      - "8.9.4"         // 版本
    before_script:      // 鉤子 有before 確定就有after 
      - npm install -g mocha

這樣當你提交代碼以後 travis就會自動運行測試 發送報告到你的郵箱

karma 的基本使用

參考 《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"
相關文章
相關標籤/搜索