On this page

    assert.notDeepEqual(actual, expected, message?): void
    Attributes
    actual:any
    expected:any
    message:string | Error | Function

    Strict assertion mode

    An alias of assert.notDeepStrictEqual().

    Legacy assertion mode

    Stability: 3Legacy: Use assert.notDeepStrictEqual() instead.

    Tests for any deep inequality. Opposite of assert.deepEqual().

    import assert from 'node:assert';
    
    const obj1 = {
      a: {
        b: 1,
      },
    };
    const obj2 = {
      a: {
        b: 2,
      },
    };
    const obj3 = {
      a: {
        b: 1,
      },
    };
    const obj4 = { __proto__: obj1 };
    
    assert.notDeepEqual(obj1, obj1);
    // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
    
    assert.notDeepEqual(obj1, obj2);
    // OK
    
    assert.notDeepEqual(obj1, obj3);
    // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
    
    assert.notDeepEqual(obj1, obj4);
    // OK
    const assert = require('node:assert');
    
    const obj1 = {
      a: {
        b: 1,
      },
    };
    const obj2 = {
      a: {
        b: 2,
      },
    };
    const obj3 = {
      a: {
        b: 1,
      },
    };
    const obj4 = { __proto__: obj1 };
    
    assert.notDeepEqual(obj1, obj1);
    // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
    
    assert.notDeepEqual(obj1, obj2);
    // OK
    
    assert.notDeepEqual(obj1, obj3);
    // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
    
    assert.notDeepEqual(obj1, obj4);
    // OK

    If the values are deeply equal, an AssertionError is thrown with a message property set equal to the value of the message parameter. If the message parameter is undefined, a default error message is assigned. If the message parameter is an instance of Error then it will be thrown instead of the AssertionError.