assert

assert

assert模块用来在单元测试中进行断言。

介绍

assert模块的方法

名称类型参数返回值说明
ok方法value:booleanvoid测试表达式是否为真
equal方法actual:any,expected:anyvoid测试两个值是否相等
deepEqual方法actual:any,expected:anyvoid检查两个值的结构是否相同

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]);
更新时间 9/28/2024, 8:21:49 AM