1.全域性安裝 mocha
npm install mocha -g複製程式碼
2.nodejs assert 簡介
strict模式:
當使用 strict
模式時,任何 assert
函式都會使用嚴格函式模式的等式。 所以 assert.deepEqual()
會等同於 assert.deepStrictEqual()
。
使用方式:const assert = require(`assert`).strict;
assert(value[, message]):assert.ok()
的別名。
value
<any> 要檢查是否為真的值。 message
<string> | <Error>
assert.deepStrictEqual(actual, expected[, message]):測試 actual
引數與 expected
引數是否深度相等。 深度相等意味著子物件中可列舉的自身屬性也會按以下規則遞迴地比較。
assert.fail([message]):丟擲 AssertionError
,並帶上提供的錯誤資訊或預設的錯誤資訊。 如果 message
引數是 Error
的例項,則會丟擲它而不是 AssertionError
。
assert.ifError(value):如果 value
不為 undefined
或 null
,則丟擲 value
。 可用於測試回撥函式的 error
引數。 堆疊蹤跡會包含傳入 ifError()
的錯誤的所有幀,包括潛在的 ifError()
自身新增的幀。
assert.notDeepStrictEqual(actual, expected[, message]):測試 actual
引數與 expected
引數是否不深度全等。 與 assert.deepStrictEqual()
相反。
assert.ok(value[, message]):測試 value
是否為真值。 相當於 assert.equal(!!value, true, message)
。
assert.rejects(block[, error][, message]):等待 block
的 promise 完成,如果 block
是一個函式,則立即呼叫該函式並等待返回的 promise 完成,然後檢查 promise 是否被 reject。如果 block
是一個函式且同步地丟擲一個錯誤,則 assert.rejects()
會返回一個被 reject 的 Promise
並傳入該錯誤。 如果該函式沒有返回一個 promise,則 assert.rejects()
會返回一個被 reject 的 Promise
並傳入 ERR_INVALID_RETURN_VALUE
錯誤。 以上兩種情況都會跳過錯誤處理函式。
該函式相當於 assert.throws()
,除了需要等待完成的非同步特性。
error
可以是 Class
、RegExp
、校驗函式、每個屬性都會被測試的物件、或每個屬性(包括不可列舉的 message
和 name
屬性)都會被測試的錯誤例項。
如果指定了 message
,則當 block
沒被 reject 時,message
引數會作為 AssertionError
的錯誤資訊。
assert.strictEqual(actual, expected[, message]):使用 SameValue比較法測試 actual
引數與 expected
引數是否全等。
assert.throws(block[, error][, message]):斷言 block
函式會丟擲錯誤。error
可以是 Class
、RegExp
、校驗函式、每個屬性都會被測試是否深度全等的校驗物件、或每個屬性(包括不可列舉的 message
和 name
屬性)都會被測試是否深度全等的錯誤例項。 當使用物件時,可以使用正規表示式來校驗字串屬性。如果指定了 message
引數,則當 block
函式不丟擲錯誤時,message
引數會作為 AssertionError
的錯誤資訊。
3.mocha 對於TDD api 簡介
describe(description,fun):稱為測試套件,表示一組相關的測試description:測試套件的名稱,fun:執行函式。
it(description,fun):表示一個單獨的測試,是測試的最小單位。description:測試用例名稱,fun:執行函式。
done():用於基於回撥函式的非同步測試,當done()被多次執行則丟擲錯誤。
describe塊中 測試用例鉤子
describe(`hooks`, function() {
before(function() {
// 在本區塊的所有測試用例之前執行
});
after(function() {
// 在本區塊的所有測試用例之後執行
});
beforeEach(function() {
// 在本區塊的每個測試用例之前執行
});
afterEach(function() {
// 在本區塊的每個測試用例之後執行
});
// test cases
});複製程式碼
參考:http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html
https://mochajs.org
http://nodejs.cn/api/assert.html