2016 - 2024

感恩一路有你

Node.js学习之断言assert的使用

浏览量:1473 时间:2024-08-15 19:28:33 作者:采采

一、断言概述

断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。断言可以在测试时启用,以验证代码的正确性,并在部署时禁用,使得代码更加稳定和不易出错。同时,断言还可以在最终用户遇到问题时重新启用,方便问题排查。在Node.js中,有十多个断言测试的函数,可以用于测试不变式。

二、判断值是否为真

判断值是否为真有以下两个断言测试函数:

2.1 assert(value[, message])

这个测试函数在value为true时通过断言测试,否则抛出AssertionError。如果没有指定message参数,会使用默认的错误信息。

2.2 assert.ok(value[, message])

assert.ok()与assert()的作用是一样的,都是测试value是否为真值。用法也一样,所以可以将assert()视为assert.ok()的语法糖。

三、判断预期值和实际值相等()

这一组里面有两个测试函数,用于测试预期值与实际值是否相等,如果相等则断言通过,否则抛出AssertionError。

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

assert.equal()用于测试期望值和实际值是否相等。对于值类型的比较,比较的是两个值是否相等;对于引用类型的比较,比较的是值的引用。

3.2 (actual, expected[, message])

()同样也是测试预期值和实际值是否相等,使用的仍然是()。但是与equal()不同的是,deepEqual()在对引用类型进行比较的时候,比较的是对象的属性值。

四、判断预期值和实际值全等()

这组测试函数是用于判断预期值和实际值是否深度相等的,内部使用的是(),所以对象的原型也会进行比较,值得类型也是比较的范围。

4.1 (actual, expected[, message])

由于内部使用的是全等(),所以对象的原型也会计入比较的范围。

4.2 (actual, expected[, message])

strictEqual()是equal()的加强版,考虑了数据类型。如果actual expected,则断言通过,否则抛出AssertionError。

五、判断预期值和实际值不相等(!)

这儿总结一下判断预期值和实际值不相等的两个测试函数,实际上就是上面(三)的逆运算。

5.1 (actual, expected[, message])

notEqual()为equal()的逆运算,如果actual ! expected则断言通过。

5.2 (actual, expected[, message])

notDeepEqual()为deepEqual()的逆运算,如果actual ! expected则断言通过。

六、判断预期值和实际值严格不相等(!)

这儿总结一下判断预期值和实际值严格不相等的两个测试函数,实际上就是上面(四)的逆运算。

6.1 (actual, expected[, message])

如果actual ! expected则断言通过。

6.2 (actual, expected[, message])

notDeepStrictEqual()就是deepStrictEqual()的逆运算,如果actual ! expected则断言通过。

七、断言错误并抛出

这一组有四个测试函数,是对错误进行的处理。

7.1 (message)

这个测试函数可以用于主动抛出带有message属性的AssertionError对象。

7.2 (actual, expected[, message[, operator[, stackStartFunction]]])

该测试函数用于主动抛出自定义错误信息,抛出错误信息格式为:actual 参数 operator 参数 expected 参数。

7.3 (block, error, message)

如果block抛出的错误满足error参数,则断言通过,否则抛出block中的错误。error参数可以

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。