[Node.js] assert 断言模块单元测试

简介: [Node.js] assert 断言模块单元测试

Node.js assert 断言模块单元测试

在nodejsh中有一个assert模块,这个模块主要用于内部断言测试使用,我们也可以在项目中使用assert模块进行断言的判断。
如果是true则测试通过,如果是false则测试不通过。
那么这和用if进行判断调试有什么区别呢?

程序一般情况下分为Debug和Release,Debug用于内部测试,Release用于用户使用。

assert

断言仅在Debug版本起作用和宏一样,它用于检查不应该发生的情况。如果断言失败,则程序会终止。(如果if那Release时还得删掉用于调试的代码)

if

表达式的值为真则执行当前语句,否则不执行。if既可以用于判断一条语句;也可以判断复合语句。

区别

  1. if判断语句,如果条件为真,则进行下一条语句;如果条件不为真,执行相反的语句
  2. assert,断言不成立时,直接终止
  3. if用于检测代码的正确性;assert检测代码的合法性,若断言失败,程序就不能运行

言归正传,还是来看看assert模块的使用,首先先引入断言assert模块

var assert = require('assert');

1.assert(value, message), assert.ok(value, [message])

//判断中值是否为true
assert.ifError(value) //测试值是否不为 false,当为 true 时抛出。常用于回调中第一个 error 参数的检查。
var a = 0;
assert(a,'这里需要值为true');   //AssertionError: 这里需要值为true
assert.ok(a,'这里也要为true');  // AssertionError: 这里也要为true

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

//抛出异常,有message时显示message,没有使用operator作为为分隔符
var a = 0;
assert.fail(a,1,'a!=1','<'); // AssertionError: a!=1
assert.fail(a,2,'','<');    // AssertionError: 0 < 2

3.assert.equal(actual, expected, [message])

//("=="判断)是否相等 相反:notEqual
 assert.strictEqual(actual, expected, [message])  //("==="判断)是否相等 相反:notStrictEqual

复制代码
var a = 2;
var a='2';

assert.equal(a,b,'a,b不相等 ==')
assert.notEqual(a,b,'a,b相等')      // AssertionError: a,b相等
assert.strictEqual(a,b,'a,b不完全相等 ===')  // AssertionError: a,b不完全相等 ===

4.assert.deepEqual(actual, expected[, message])

// 是否深度匹配  相反: notDeepEqual
var buf1 = new Buffer('abc');
var buf2 = new Buffer('abc');

assert.strictEqual(buf1, buf2, 'buf1和buf2不一样');  //AssertionError: buf1和buf2不一样
assert.notDeepEqual(buf1, buf2, 'buf1和buf2一样');  //AssertionError: buf1和buf2一样

5.assert.throws(block, [error], [message])

//声明一个block用于抛出错误,'error'可以是构造函数,验证函数或者正则表达式

assert.doesNotThrow(block, [message])//声明模块不抛出错误

复制代码
//构造函数
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"
);
目录
相关文章
|
2月前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
500 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
1月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的16psk调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的16PSK调制解调系统的硬件测试版本。系统在原有仿真基础上增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同信噪比下的性能测试。16PSK通过改变载波相位传输4比特信息,广泛应用于高速数据传输。硬件测试操作详见配套视频。开发板使用及移植方法也一并提供。
37 6
|
2月前
|
数据采集 算法 测试技术
【硬件测试】基于FPGA的QPSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的QPSK调制解调系统的硬件实现与仿真效果。系统包含测试平台(testbench)、高斯信道模块、误码率统计模块,支持不同SNR设置,并增加了ILA在线数据采集和VIO在线SNR设置功能。通过硬件测试验证了系统在不同信噪比下的性能,提供了详细的模块原理及Verilog代码示例。开发板使用说明和移植方法也一并给出,确保用户能顺利在不同平台上复现该系统。
82 15
|
1月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的8PSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现8PSK调制解调系统,包含高斯信道、误码率统计、ILA数据采集和VIO在线SNR设置模块。通过硬件测试和Matlab仿真,展示了不同SNR下的星座图。8PSK调制通过改变载波相位传递信息,具有高频谱效率和抗干扰能力。开发板使用及程序移植方法详见配套视频和文档。
44 7
|
2月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的2FSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的2FSK调制解调系统,包含高斯信道、误码率统计模块及testbench。系统增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同SNR下的硬件测试,并提供操作视频指导。理论部分涵盖频移键控(FSK)原理,包括相位连续与不连续FSK信号的特点及功率谱密度特性。Verilog代码实现了FSK调制解调的核心功能,支持在不同开发板上移植。硬件测试结果展示了不同SNR下的性能表现。
80 6
|
4月前
|
缓存 JavaScript 安全
nodejs里面的http模块介绍和使用
综上所述,Node.js的http模块是构建Web服务的基础,其灵活性和强大功能,结合Node.js异步非阻塞的特点,为现代Web应用开发提供了坚实的基础。
149 62
|
4月前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
79 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
3月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
597 1
|
4月前
|
计算机视觉
目标检测笔记(二):测试YOLOv5各模块的推理速度
这篇文章是关于如何测试YOLOv5中不同模块(如SPP和SPPF)的推理速度,并通过代码示例展示了如何进行性能分析。
199 3
|
4月前
|
缓存 JSON JavaScript
Node.js模块系统
10月更文挑战第4天
60 2

热门文章

最新文章

  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    Node.js 中实现多任务下载的并发控制策略
    32
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    25
  • 4
    【JavaScript】深入理解 let、var 和 const
    48
  • 5
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    44
  • 6
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    53
  • 7
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    55
  • 8
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    71
  • 9
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    55
  • 10
    JavaWeb JavaScript ③ JS的流程控制和函数
    62