assert
assert
assert模块用来在单元测试中进行断言。
介绍
assert模块的方法
名称 | 类型 | 参数 | 返回值 | 说明 |
---|---|---|---|---|
ok | 方法 | value:boolean | void | 测试表达式是否为真 |
equal | 方法 | actual:any,expected:any | void | 测试两个值是否相等 |
deepEqual | 方法 | actual:any,expected:any | void | 检查两个值的结构是否相同 |
ok
assert.ok
的功能是测试表达式是否为真。
语法
assert.ok(value:boolean)
参数
- value:需要测试的值或表达式。如果该值为
false
(包括 false 本身、0、空字符串、null、NaN 等),则断言失败。
示例
import assert from "assert"
// 直接检查布尔值
assert.ok(true); // 通过
assert.ok(1); // 通过
// 使用逻辑表达式
assert.ok(2 > 1); // 通过
// 测试对象是否存在(即不是 null)
const obj = {};
assert.ok(obj); // 通过
// 逻辑判断
assert.ok("Hello" || 1); // 通过
assert.ok(!null); // 通过
equal
assert.equal
的功能是测试两个值是否相等,它使用抽象相等性比较 (==),也就是所谓的宽松相等比较
语法
assert.equal(actual:any,expected:any)
参数
- actual:实际的值,即被测试的结果。
- expected:期望的值,测试将判断
actual
是否与expected
相等。
特性
assert.equal
使用宽松相等 (==) 进行比较,这意味着在比较时进行类型转换。- 例如,数字 1 和字符串 '1' 被认为是相等的。
示例
import assert from "assert"
// 测试通过,因为 1 == '1'
assert.equal(1, '1');
// 测试通过,因为 true == 1
assert.equal(true, 1);
// 测试失败,并抛出 AssertionError 异常
assert.equal(1, 2);
deepEqual
assert.deepEqual
用于深度比较两个对象或数组的等价性。当你需要验证两个复杂对象(如数组或对象字面量)的内容和结构是否完全相等时,这个方法非常有用。
语法
assert.deepEqual(actual:any,expected:any)
参数
- actual:实际的值,即测试中得到的结果。
- expected:期望的值,测试将判断
actual
是否在结构和内容上与expected
相等。
特性
assert.deepEqual
会检查对象或数组的内容及其结构,确保它们的每个成员都相等。
示例
import assert from "assert"
let obj1 = {
a: {
b: 1,
},
};
let arr1 = [1, 2, 3];
assert.deepEqual(obj1, {a: {b: 1}});
assert.deepEqual(arr1, [1, 2, 3]);