mocha是一款功能豐富的javascript單元測試框架,它既能夠運行在nodejs環境中,也能夠運行在瀏覽器環境中。javascript是一門單線程語言,最顯著的特色就是有不少異步執行。同步代碼的測試比較簡單,直接判斷函數的返回值是否符合預期就好了,而異步的函數,就須要測試框架支持回調、promise或其餘的方式來判斷測試結果的正確性了。mocha能夠良好的支持javascript異步的單元測試。mocha會串行地執行咱們編寫的測試用例,能夠在將未捕獲異常指向對應用例的同時,保證輸出靈活準確的測試結果報告。javascript
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模塊git
var assert = require('assert');
複製代碼
1.assert(value[, message]) assert.ok() 的別名。github
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
拋出 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