第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。

复制代码
稳定性: 5 - 锁定

这个模块可用于应用的单元测试,通过 require('assert') 可以使用这个模块。

assert.fail(actual, expected, message, operator)

使用参数operator测试参数actual (实际值) 和expected(期望值)是否相等。

assert(value, message), assert.ok(value, message)

测试参数value是否为true,此函数和assert.equal(true, !!value, message);等价。

assert.equal(actual, expected, message)

判断实际值actual和期望值expected是否相等。

assert.notEqual(actual, expected, message)

判断实际值actual和期望值expected是否不等。

assert.deepEqual(actual, expected, message)

执行深度比较,判断实际值actual和期望值expected是否相等。

assert.notDeepEqual(actual, expected, message)

深度比较两个参数是否不相等。

assert.strictEqual(actual, expected, message)

深度比较两个参数是否相等。

assert.notStrictEqual(actual, expected, message)

此函数使用操作符 '!==' 严格比较是否两参数不相等。

assert.throws(block, error, message)

声明一个block用来抛出错误(error),error可以是构造函数,正则表达式或其他验证器。

使用构造函数验证实例:

复制代码
    assert.throws(
      function() {
        throw new Error("Wrong value");
      },
      Error
    );

使用正则表达式验证错误信息:

复制代码
    assert.throws(
      function() {
        throw new Error("Wrong value");
      },
      /value/
    );

用户自定义的错误验证器:

复制代码
    assert.throws(
      function() {
        throw new Error("Wrong value");
      },
      function(err) {
        if ( (err instanceof Error) && /value/.test(err) ) {
          return true;
        }
      },
      "unexpected error"
    );

assert.doesNotThrow(block, message)

声明block不抛出错误,详细信息参见assert.throws

assert.ifError(value)

判断参数value是否为false ,如果是true,则抛出异常。通常用来测试回调中第一个参数error。

相关推荐
独孤九剑打醒他1 小时前
双层Master-Worker软硬协同调度架构:从根源解决分布式数据一致性难题
后端·嵌入式硬件·硬件架构·硬件工程
不会c+3 小时前
02-SpringBoot配置文件
java·spring boot·后端
雨辰AI4 小时前
生产级实战:人大金仓 V9 标准化运维手册(日常巡检 + 监控告警 + 应急处置)
java·运维·数据库·后端
TeamDev4 小时前
JxBrowser 9.3.0 版本发布啦!
java·后端·c#·混合应用·jxbrowser·浏览器控件·异步媒体设备
陈随易5 小时前
Rust、Golang、MoonBit 编译成 WASM,体积和速度差距有多大?
前端·后端·程序员
IT_陈寒5 小时前
Python多线程的坑,我居然现在才踩到
前端·人工智能·后端
魏祖潇6 小时前
DDD 完整指南——AI 时代工程师的第一道秩序分水岭
人工智能·后端
im_lanny6 小时前
如何给 Agent 打造“最强大脑“?深度解析短期记忆与长期记忆的分层设计
后端
Fanta丶6 小时前
2.Activiti表结构介绍 类关系
后端
触底反弹6 小时前
AI Tool Use 深度解析:大模型是如何"突破物理限制"调用外部工具的?
javascript·人工智能·后端