assert.deepEqual()


assert.deepEqual(actual, expected[, message])

深度比較 actual 和 expected 參數,使用比較運算符(==)比較原始值。
只考慮可枚舉的“自身”屬性。deepEqual() 的實現不測試對象的原型,連接符號,或不可枚舉的屬性。這會導致一些潛在的出人意料的結果。例如,下面的例子不會拋出 AssertionError,因為 Error 對象的屬性是不可枚舉:

// WARNING: This does not throw an AssertionError!
assert.deepEqual(Error('a'), Error('b'));

深度比較意味着子對象的可枚舉“自身”的屬性也會進行評估:

const assert = require('assert');

const obj1 = {
    a: {
        b: 1
    }
};
const obj2 = {
    a: {
        b: 2
    }
};
const obj3 = {
    a: {
        b: 1
    }
}
const obj4 = Object.create(obj1);

assert.deepEqual(obj1, obj1);
// OK, object is equal to itself

assert.deepEqual(obj1, obj2);
// AssertionError: { a: { b: 1 } } deepEqual { a: { b: 2 } }
// values of b are different

assert.deepEqual(obj1, obj3);
// OK, objects are equal

assert.deepEqual(obj1, obj4);
// AssertionError: { a: { b: 1 } } deepEqual {}
// Prototypes are ignored

如果這兩個值不相等,將會拋出一個帶有 message 屬性(等於該 message 參數的值)的 AssertionError。如果 message 參數為 undefined,將會分配一個默認的錯誤消息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM