javascript單元測試框架mocha 和 斷言庫 assert

簡介

mocha是一款功能豐富的javascript單元測試框架,它既能夠運行在nodejs環境中,也能夠運行在瀏覽器環境中。javascript是一門單線程語言,最顯著的特色就是有不少異步執行。同步代碼的測試比較簡單,直接判斷函數的返回值是否符合預期就好了,而異步的函數,就須要測試框架支持回調、promise或其餘的方式來判斷測試結果的正確性了。mocha能夠良好的支持javascript異步的單元測試。mocha會串行地執行咱們編寫的測試用例,能夠在將未捕獲異常指向對應用例的同時,保證輸出靈活準確的測試結果報告。javascript

安裝

npm install mocha -g

簡單的例子

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(4))
            })
        })
    })
複製代碼

在終端中運行後如出現下面結果則爲經過:html

Array
    #indexOf()
      ✓ should return -1 when the value is not present


  1 passing (9ms)
複製代碼

一個簡單的測試包含describe和it,describe聲明瞭一個TestSuit(測試集合) ,並且測試集合能夠嵌套管理,而it聲明定義了一個具體的測試用例。java

assert爲斷言庫,除了assert還有以下幾種,Mocha容許你使用你喜歡的斷言庫node

assert斷言庫

首先先引入斷言assert模塊git

var assert = require('assert');
複製代碼

1.assert(value[, message])    assert.ok() 的別名。github

  • value 要檢查是否爲真的值。
  • message |
assert.ok(true); 同  assert(true)
// 測試經過。
assert.ok(false, '不是真值'); 同  assert(false, '不是真值')
// 拋出 AssertionError: 不是真值
複製代碼

2.assert.equal(actual, expected[, message])npm

assert.equal(1, 1);
// OK, 1 == 1
assert.equal(1, '1');
// OK, 1 == '1'

assert.equal(1, 2);
// AssertionError: 1 == 2
assert.equal({ a: { b: 1 } }, { a: { b: 1 } });
// AssertionError: { a: { b: 1 } } == { a: { b: 1 } }
複製代碼

3.assert.fail([message])segmentfault

  • message | 默認爲 'Failed'。

拋出 AssertionError,並帶上提供的錯誤信息或默認的錯誤信息。 若是 message 參數是 Error 的實例,則會拋出它而不是 AssertionError。api

const assert = require('assert').strict;

assert.fail();
// 拋出 AssertionError [ERR_ASSERTION]: Failed

assert.fail('失敗');
// 拋出 AssertionError [ERR_ASSERTION]: 失敗

assert.fail(new TypeError('失敗'));
// 拋出 TypeError: 失敗
複製代碼

參考

nodejs.cn/api/assert.…promise

segmentfault.com/a/119000001…

相關文章
相關標籤/搜索