• nodejs assert 模块


    assert模块是Node的内置模块,主要用于断定。如果表达式不符合预期,就抛出一个错误。该模块提供11个方法,但只有少数几个是常用的。

    1.assert()

    assert(value[, message])

    assert.ok() 的别名,ok是assert方法的另一个名字,与assert方法完全一样。

    assert方法接受两个参数,当第一个参数对应的布尔值为true时,不会有任何提示,返回undefined。当第一个参数对应的布尔值为false时,会抛出一个错误,该错误的提示信息就是第二个参数设定的字符串

    // 格式
    assert(value, message)
    
    // 例子
    var assert = require('assert');
    
    function add (a, b) {
      return a + b;
    }
    
    var expected = add(1,2);
    assert( expected === 3, '预期1加2等于3');

    上面代码不会有任何输出,因为assert方法的第一个参数是true。

    assert( expected === 4, '预期1加2等于3')
    // AssertionError: 预期1加2等于3

    上面代码会抛出一个错误,因为assert方法的第一个参数是false。

    2.assert.throws(block[, error][, message])

    断定 block 函数抛出错误(通俗解释throws方法预期某个代码块会抛出一个错误,且抛出的错误符合指定的条件。)。

    error 参数可以是构造函数、正则表达式、或自定义函数。

    如果指定了 message 参数,则当 block 函数不抛出错误时,message 参数会作为 AssertionError 的错误信息。

     1 // 格式
     2 assert.throws(block, [error], [message])
     3 
     4 // 例一,抛出的错误符合某个构造函数
     5 assert.throws(
     6   function() {
     7     throw new Error("Wrong value");
     8   },
     9   Error,
    10   '不符合预期的错误类型'
    11 );
    12 
    13 // 例二、抛出错误的提示信息符合正则表达式
    14 assert.throws(
    15   function() {
    16     throw new Error("Wrong value");
    17   },
    18   /value/,
    19   '不符合预期的错误类型'
    20 );
    21 
    22 // 例三、抛出的错误符合自定义函数的校验
    23 assert.throws(
    24   function() {
    25     throw new Error("Wrong value");
    26   },
    27   function(err) {
    28     if ( (err instanceof Error) && /value/.test(err) ) {
    29       return true;
    30     }
    31   },
    32   '不符合预期的错误类型'
    33 );

    error 参数不能是字符串。 如果第二个参数是字符串,则视为省略 error 参数,传入的字符串会被用于 message 参数。 例如:

    1 // 这是错误的!不要这么做!
    2 assert.throws(myFunction, '错误信息', '没有抛出期望的信息');
    3 
    4 // 应该这么做。
    5 assert.throws(myFunction, /错误信息/, '没有抛出期望的信息');

    3.assert.doesNotThrow(block[, error][, message])

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

    当 assert.doesNotThrow() 被调用时,它会立即调用 block 函数。

    如果抛出错误且错误类型与 error 参数指定的相同,则抛出 AssertionError。 如果错误类型不相同,或 error 参数为 undefined,则抛出错误(通俗解释doesNotThrow方法与throws方法正好相反,预期某个代码块不抛出错误。)。

     1 // 格式
     2 assert.doesNotThrow(block, [message])
     3 
     4 // 用法
     5 assert.doesNotThrow(
     6   function() {
     7     console.log("Nothing to see here");
     8   },
     9   '预期不抛出错误'
    10 );

    以下例子会抛出 TypeError,因为在断定中没有匹配的错误类型:

    1 assert.doesNotThrow(
    2   () => {
    3     throw new TypeError('错误信息');
    4   },
    5   SyntaxError
    6 );

    以下例子会抛出一个带有 Got unwanted exception (TypeError).. 信息的 AssertionError:因为错误类型相同

    1 assert.doesNotThrow(
    2   () => {
    3     throw new TypeError('错误信息');
    4   },
    5   TypeError
    6 );

    如果抛出了 AssertionError 且有给 message 参数传值,则 message 参数的值会被附加到 AssertionError 的信息中:

    1 assert.doesNotThrow(
    2   () => {
    3     throw new TypeError('错误信息');
    4   },
    5   TypeError,
    6   '抛出错误'
    7 );
    8 // 抛出 AssertionError: Got unwanted exception (TypeError). 抛出错误
  • 相关阅读:
    JS 保存表单默认值 为空时自动填充默认值
    .net 防盗链
    Subversion安装和使用
    (转) MFC的入口点与消息循环,消息映射
    ASP.NET树形控件TreeView的递归绑定
    SQL Server中的分页
    C# 调用WebService的方法
    从零开始定义自己的JavaScript框架(一)
    JS中的call和apply
    JS中的自执行函数
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/7623465.html
Copyright © 2020-2023  润新知