zoukankan      html  css  js  c++  java
  • node.js官方文档解析 01—assert 断言

    assert-------断言

    new assert.AssertionError(options)

    Error 的一个子类,表明断言的失败。

    options(选项)有下列对象

    • message <string> 如果有值,则错误信息会被设为该值。
    • actual (实际)<any> 错误实例的 actual 属性会被设为该值。用于 actual 错误输入,例如使用 assert.strictEqual()
    • expected (期望值)<any> 错误实例的 expected 属性会被设为该值。用于 expected 错误输入,例如使用 assert.strictEqual()
    • operator(运算符) <string> 错误实例的 operator 属性会被设为该值。用于表明比较时使用的是哪个操作(或触发错误的是哪个断言函数)。
    • stackStartFn <Function> 如果有值,则由提供的函数生成堆栈踪迹。

    assert.doesNotReject(block[, error][, message])

    doesNotReject(不能拒结)

    error 可以是 ClassRegExp 或校验函数。

    assert.doesNotThrow

    .doesNotThrow(抛)

    断言 block 函数不会抛出错误。

    //  SyntaxError(语法错误)

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

    .equal(相等)

    或者 assert.strictEqual().(和上面的意思相同,表示一个别名)

    eg:使用抽象的相等比较(==)测试实际和预期参数之间的浅、强制的相等性。

    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 } });
    // AssertionError: { a: { b: 1 } } == { a: { b: 1 } }

    如果值不相等,就会抛出一个断言错误,它将与消息参数的值相等。如果消息参数没有定义,就会分配一条默认的错误消息。如果消息参数是一个错误的实例,那么它将被抛出而不是断言错误。

    assert.fail([message])

    .fail(失败)

    抛出 AssertionError,并带上提供的错误信息或默认的错误信息。 如果 message 参数是 Error 的实例,则会抛出它而不是 AssertionError

    const assert = require('assert').strict;
    
    assert.fail();//没有提供错误信息
    // 抛出 AssertionError [ERR_ASSERTION]: Failed
    
    assert.fail('失败');//字符串
    // 抛出 AssertionError [ERR_ASSERTION]: 失败
    
    assert.fail(new TypeError('失败'));
    // 抛出 TypeError: 失败
    

      

    assert.ifError(value)

    如果 value 不为 undefined 或 null,则抛出 value。可用于测试回调函数的 error 参数。 堆栈踪迹会包含传入 ifError() 的错误的所有帧,包括潜在的 ifError() 自身新增的帧

    //errorFrame(错误帧)

    const assert = require('assert').strict;
    
    assert.ifError(null);//使用了value规则的undefined和null
    // 通过。
    assert.ifError(0);
    // 抛出 AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 0
    assert.ifError('错误信息');
    // 抛出 AssertionError [ERR_ASSERTION]: ifError got unwanted exception: '错误信息'
    assert.ifError(new Error());
    // 抛出 AssertionError [ERR_ASSERTION]: ifError got unwanted exception: Error
    
    // 添加一些错误帧。
    let err;
    (function errorFrame() {
      err = new Error('错误信息');
    })();
    
    (function ifErrorFrame() {
      assert.ifError(err);
    })();
    // AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 错误信息
    //     at ifErrorFrame
    //     at errorFrame
    

     //any类型可以赋值任意类型。

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

      测试 actual 参数与 expected 参数是否不深度全等。 与 assert.deepStrictEqual() 相反。

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

     actual 参数与 expected 参数是否不全等。

    const assert = require('assert').strict;
    
    assert.notStrictEqual(1, 2);
    // 测试通过。
    
    assert.notStrictEqual(1, 1);
    // 抛出 AssertionError [ERR_ASSERTION]: Identical input passed to notStrictEqual: 1
    
    assert.notStrictEqual(1, '1');
    // 测试通过。
    

    如果两个值全等,则抛出一个带有 message 属性的 AssertionError,其中 message 属性的值等于传入的 message 参数的值。 如果 message 参数为 undefined,则赋予默认的错误信息。 如果 message 参数是 Error 的实例,则会抛出它而不是 AssertionError

    assert.ok(value[, message])

    测试 value 是否为真值。

    如果 value 不为真值,则抛出一个带有 message 属性的 AssertionError,其中 message 属性的值等于传入的 message 参数的值。 如果 message 参数为 undefined,则赋予默认的错误信息。 如果 message 参数是 Error 的实例,则会抛出它而不是 AssertionError。 如果没有传入参数,则 message 会被设为字符串 'No value argument passed to `assert.ok()`'

    eg:

    const assert = require('assert').strict;
    
    assert.ok(true);
    // 测试通过。
    assert.ok(1);
    // 测试通过。
    
    assert.ok();//如果没有传入参数,则 message 会被设为字符串 'No value argument passed to `assert.ok()`'。
    // 抛出 AssertionError: No value argument passed to `assert.ok()`
    
    assert.ok(false, '不是真值');
    // 抛出 AssertionError: 不是真值
    
    // 在 repl 中:
    assert.ok(typeof 123 === 'string');
    // 抛出 AssertionError: false == true
    
    // 在文件中(例如 test.js):
    assert.ok(typeof 123 === 'string');
    // 抛出 AssertionError: The expression evaluated to a falsy value:
    //
    //   assert.ok(typeof 123 === 'string')
    assert.ok(false);
    // 抛出 AssertionError: The expression evaluated to a falsy value:
    //
    //   assert.ok(false)
    
    assert.ok(0);
    // 抛出 AssertionError: The expression evaluated to a falsy value:
    //
    //   assert.ok(0)
    
    // 等同于 `assert()`:
    assert(0);
    // 抛出 AssertionError: The expression evaluated to a falsy value:
    //
    //   assert(0)

    //promise:表示异步操作的最终完成(或失败)及其产生的值。
    assert.rejects(block[, error][, message])//不懂

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

    测试 actual 参数与 expected 参数是否全等。

    const assert = require('assert').strict;
    
    assert.strictEqual(1, 2);
    // 抛出 AssertionError [ERR_ASSERTION]: Input A expected to strictly equal input B:
    // + expected - actual
    // - 1
    // + 2
    
    assert.strictEqual(1, 1);
    // 测试通过。
    
    assert.strictEqual(1, '1');
    // 抛出 AssertionError [ERR_ASSERTION]: Input A expected to strictly equal input B:
    // + expected - actual
    // - 1
    // + '1'
    

    如果两个值不全等,则抛出一个带有 message 属性的 AssertionError,其中 message 属性的值等于传入的 message 参数的值。 如果 message 参数为 undefined,则赋予默认的错误信息。 如果 message 参数是 Error 的实例,则会抛出它而不是 AssertionError

     //nested(嵌套)
    //info(信息)
  • 相关阅读:
    虚函数和纯虚函数
    MS CRM 2011中PartyList类型字段的实例化
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(4)
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(2)
    MS CRM 2011的自定义和开发(10)——CRM web服务介绍(第二部分)——IOrganizationService(二)
    MS CRM 2011 SDK 5.08已经发布
    MS CRM 2011 Q2的一些更新
    最近很忙
    Microsoft Dynamics CRM 2011最近的一些更新
    补一篇,Update Rollup 12 终于发布了
  • 原文地址:https://www.cnblogs.com/chen1997/p/9381204.html
Copyright © 2011-2022 走看看