assert

assert

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

介绍

assert模块的方法

名称类型参数返回值说明
ok方法value:boolean, msg?:stringvoid测试表达式是否为真
equal方法actual:any,expected:any, msg?:stringvoid测试两个值是否相等
deepEqual方法actual:any,expected:any, msg?:stringvoid检查两个值的结构是否相同
throws方法fn:Function,expected:any,msg?:stringvoid测试函数是否抛出指定异常
getResult方法object获取测试结果对象
printResult方法void打印测试结果表格
panic属性boolean控制断言失败时是否抛出异常

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]);

throws

assert.throws用于测试一个函数是否抛出指定的异常。

语法

assert.throws(fn:Function, expected:any, msg?:string)

参数

  • fn:待测试的函数。
  • expected:期望抛出的异常信息(字符串)。
  • msg:(可选)自定义失败提示信息。

示例

import assert from "assert"
assert.throws(() => {
	throw new Error("测试异常");
}, "测试异常");

getResult

assert.getResult用于获取测试结果对象。

语法

assert.getResult()

返回值

返回一个包含测试结果的对象,结构如下:

{
	"Count": 10,
	"Fail": 1,
	"Success": 9,
	"Fails": [
		{
			"file": "test.vs",
			"line": 15,
			"error": "错误信息"
		}
	]
}

示例

import assert from "assert"
// ... 执行多个断言 ...
let result = assert.getResult();
console.log(result.Count, result.Success, result.Fail);

printResult

assert.printResult用于打印测试结果表格,包括用例总数、成功数、失败数、通过率,以及失败用例的详细信息。

语法

assert.printResult()

示例

import assert from "assert"
// ... 执行多个断言 ...
assert.printResult();

panic

panic属性用于控制断言失败时是否抛出异常,默认值为false。当设置为true时,断言失败会立即抛出异常。

语法

assert.panic = true;

示例

import assert from "assert"
// 设置断言失败时抛出异常
assert.panic = true;
assert.ok(false); // 将抛出异常
更新时间 6/10/2026, 2:26:26 PM