assert
assert
assert模块用来在单元测试中进行断言。
介绍
assert模块的方法
| 名称 | 类型 | 参数 | 返回值 | 说明 |
|---|---|---|---|---|
ok | 方法 | value:boolean, msg?:string | void | 测试表达式是否为真 |
equal | 方法 | actual:any,expected:any, msg?:string | void | 测试两个值是否相等 |
deepEqual | 方法 | actual:any,expected:any, msg?:string | void | 检查两个值的结构是否相同 |
throws | 方法 | fn:Function,expected:any,msg?:string | void | 测试函数是否抛出指定异常 |
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); // 将抛出异常
