[NODE之9]assert模块

/**Assert练习
 * Created by liyanq on 17/3/23.
 * Assert自带抛出异常功能~
 */

const assert = require("assert");
/*assert(value[, message])
 * assert(true);// 通过
 * assert(1);// 通过
 * assert(false);//不通过
 * assert(0);//不通过*/
try {
    assert(false, "我是错误信息~");
}
catch (e) {
    console.log(e.message);
}
/*----------------------------------------------------------------------------------*/
/*assert.deepEqual(actual, expected[, message])
 * 测试 actual 参数与 expected 参数是否深度相等。 原始值使用相等运算符(==)比较
 * 注意:对象间的比较不管==还是===都是比较地址,如果地址一样就相等*/

try {
    var objDeepEqual1 = new Object("hello");
    var objDeepEqual2 = new Object("hello");
    objDeepEqual2.age = 33;
    assert.deepEqual(objDeepEqual1, objDeepEqual2,"deepEqual两个对象深度比较");//
}
catch (e) {
    console.log(e.message);
}

/*assert.deepStrictEqual(actual, expected[, message])
* 相当于对象间的===*/
try {
    assert.deepStrictEqual({a:"1"},{a:1},"deepStrictEqual比较很严格~~")
}
catch (e){
    console.log(e.message);
}
/*----------------------------------------------------------------------------------*/
/*assert.doesNotThrow(block[, error][, message])
* 如果抛出错误且错误类型与 error 参数指定的相同,则抛出 AssertionError。
* 如果错误类型不相同,或 error 参数是 undefined,则错误会被抛回给调用者。*/
try {
    assert.doesNotThrow(
        () => {
            throw new TypeError('错误');
        },
        TypeError,
        '抛出错误'
    );
}
catch (e){
    console.log(e.message);
}
/*assert.equal(actual, expected[, message])
* 相当于==,如果应用到对象,那么比较的是地址
* assert.strictEqual(actual, expected[, message])
* 相当于===,如果应用到对象,那么比较的是地址*/
try {
    assert.equal({a:1},{a:1},"equal比较的是地址");
}
catch (e){
    console.log(e.message);
}


/*assert.ifError(value):function(err) { if (err) throw err; };
* 如果 value 为真,则抛出 value。 可用于测试回调函数的 error 参数。
* 说白了就是判断异常对象,如果是的话,抛出异常信息,如果不是且true,抛出undefined,否则没动静~~*/
try {
    // assert.ifError("error");//undefined
    assert.ifError(new Error("ifError的error"));//ifError的error
}catch (e){
    console.log(e.message);
}


/*assert.notDeepEqual(actual, expected[, message])
* 测试是否不深度相等。 与 assert.deepEqual() 相反。*/

/*assert.notDeepStrictEqual(actual, expected[, message])
* 测试是否不深度全等。 与 assert.deepStrictEqual() 相反。*/

/*assert.notEqual(actual, expected[, message])
* 使用不等运算符(!=)测试是否不相等*/

/*assert.notStrictEqual(actual, expected[, message])
* 使用不全等运算符(!==)测试是否不全等。*/

/*assert.ok(value[, message])
* 测试 value 是否为真值。 相当于 assert.equal(!!value, true, message)。*/

/*----------------------------------------------------------------------------------*/
/*assert.throws(block[, error][, message])
* 如果指定了 message,则当 block 不抛出错误时,message 会作为 AssertionError 的错误信息。
* 如果指定了 error,error 可以是构造函数、正则表达式、或自定义的验证函数

* 应该这么做。
* assert.throws(myFunction, /错误/, '没有抛出期望的信息');*/

try{
    assert.throws(
        () => {
            throw new Error('错误信息');//这个函数里面没异常抛出的话,assert.throws就直接抛出"不是期望的错误"
        },
        function(err) {
            // err instanceof Error =>true
            // /错误/.test(err.message)=>true  /错误/能匹配上"错误信息"
            if ((err instanceof Error) && /错误/.test(err.message)){
                return true;//吸收错误了~~;false的话,继续抛出
            }
        },
        '不是期望的错误'
    );
}catch (e){
    console.log(e.message);
}
 
http://nodejs.cn/api/assert.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值