/**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