Nodejs 斷言 assert

lazysunday發表於2019-02-26

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 不為 undefinednull,則丟擲 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 可以是 ClassRegExp、校驗函式、每個屬性都會被測試的物件、或每個屬性(包括不可列舉的 messagename 屬性)都會被測試的錯誤例項。

如果指定了 message,則當 block 沒被 reject 時,message 引數會作為 AssertionError 的錯誤資訊。

    assert.strictEqual(actual, expected[, message]):使用 SameValue比較法測試 actual 引數與 expected 引數是否全等。

    assert.throws(block[, error][, message]):斷言 block 函式會丟擲錯誤。error 可以是 ClassRegExp、校驗函式、每個屬性都會被測試是否深度全等的校驗物件、或每個屬性(包括不可列舉的 messagename 屬性)都會被測試是否深度全等的錯誤例項。 當使用物件時,可以使用正規表示式來校驗字串屬性。如果指定了 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

相關文章