Node内蔵オブジェクトのassertについて


ノード内蔵オブジェクトのassert


一.assertは主に何をしていますか?


assertモジュールはノードの内蔵モジュールであり,主に断言に用いられる.式が予想に合わない場合は、モジュールの機能をテストするために使用できるエラーが投げ出されます.いくつかは一般的です.

二.assertの使用


共通の概念:
* actual: 
* expeacted: 
* message: 

1.Assert

    const assert = require('assert');

    assert(true);  // OK
    assert(1);     // OK
    assert(false);
      // throws "AssertionError: false == true"
    assert(0);
      // throws "AssertionError: 0 == true"
    assert(false, 'it\'s false');
      // throws "AssertionError: it's false"

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

  • 実際の値が予想値に等しいかどうかを比較します.==
  • に相当
    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);

    3.assert.assert.deepStrictEqual(actual, expected[, message]))

  • 注意点deepStrictEqual=
  • const assert = require('assert');
    
    assert.deepEqual({a:1}, {a:'1'});
      // OK, because 1 == '1'
    
    assert.deepStrictEqual({a:1}, {a:'1'});
      // AssertionError: { a: 1 } deepStrictEqual { a: '1' }
      // because 1 !== '1' using strict equality

    4.assert.doesNotThrow(block, error)


    doesNotThrow予想が異なる場合、あるコードブロックがエラーを投げ出さないことを予想する
    assert.doesNotThrow(
      () => {
        throw new TypeError('Wrong value');
      },
      SyntaxError
    );

    5.assert.equal(actual, expected[, message])

  • 注意点:equalメソッドの内部では、厳密な演算子(===)ではなく、等しい演算子(===)が使用され、比較演算が行われます.
  • 
    const assert = require('assert');
    
    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}});
    

    6.assert.fail(actual, expected, message, operator)

  • failメソッドは、エラー
  • を投げ出すために使用される.
    const assert = require('assert');
    
    assert.fail(1, 2, undefined, '>');
      // AssertionError: 1 > 2
    
    assert.fail(1, 2, 'whoops', '>');
    

    7.assert.ifError(value)

  • ifErrorメソッドは、式がfalse
  • であるかどうかを断言する.
    const assert = require('assert');
    
    assert.ifError(0); // OK
    assert.ifError(1); // Throws 1
    assert.ifError('error'); // Throws 'error'
    assert.ifError(new Error()); // Throws Error

    8.assert.notDeepEqual(actual, expected[, message])

    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.notDeepEqual(obj1, obj1);
      // AssertionError: { a: { b: 1 } } notDeepEqual { a: { b: 1 } }
    
    assert.notDeepEqual(obj1, obj2);
      // OK, obj1 and obj2 are not deeply equal

    9.assert.notEqual(actual, expected[, message])

      const assert = require('assert');
      assert.notEqual(1, 2);
      // OK
      assert.notEqual(1, 1);
      // AssertionError: 1 != 1
    assert.notEqual(1, '1');
      // AssertionError: 1 != '1'

    10.assert.notStrictEqual(actual, expected[, message])


    比較値、==に相当
    const assert = require('assert');
    
    assert.notDeepEqual({a:1}, {a:'1'});
      // AssertionError: { a: 1 } notDeepEqual { a: '1' }
    
    assert.notDeepStrictEqual({a:1}, {a:'1'});
      // OK

    11.assert.ok(value[, message])


    OKはassertメソッドのもう一つの名前で、assertメソッドと全く同じです.
        const assert = require('assert');
        assert.ok(true);  // OK
        assert.ok(1);     // OK
        assert.ok(false);
        // throws "AssertionError: false == true"
        assert.ok(0);
        // throws "AssertionError: 0 == true"
        assert.ok(false, 'it\'s false');

    12.assert.strictEqual(actual, expected[, message])

  • は比較==
  • に相当する
        const assert = require('assert');
        assert.strictEqual(1, 2);
        // AssertionError: 1 === 2
        assert.strictEqual(1, 1);
        // OK
        assert.strictEqual(1, '1');
        // AssertionError: 1 === '1'

    13.assert.throws(block, error)

  • throwsメソッドは、コードブロックがエラーを投げ出すことを予想し、投げ出されたエラーは指定された条件
  • に合致する.
        assert.throws(
          () => {
              throw new Error('Wrong value');
          },
          Error
        );
    

    *nodejsの環境:
    *参考資料https://nodejs.org/api/assert...