位置: 编程技术 - 正文

NodeJS测试框架mocha入门教程(nodejs test)

编辑:rootadmin

推荐整理分享NodeJS测试框架mocha入门教程(nodejs test),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs mocha,nodejs mocha,nodejs自动化测试 框架,nodejs 性能测试,nodejs单元测试,nodejs自动化测试 框架,node 测试,nodejs单元测试,内容如对您有帮助,希望把文章链接给更多的朋友!

NodeJS里最常用的测试框架估计就是mocha了。它支持多种node的assert libs, 同时支持异步和同步的测试,同时支持多种方式导出结果,也支持直接在browser上跑Javascript代码测试。

本文示例大多源于官网示例,部分示例结合需要或自己的感想有所改动。更多介绍请看 官方网址:Mocha on Github

Installation:

当你成功安装nodejs v0. 和 npm后执行下面这条命令。

# npm install -g mocha

p.s. Ubuntu的注意apt源里的nodejs版本会比较旧,某些module会不支持,请从nodejs官网进行源码安装。

First step to Mocha:

以下为最简单的一个mocha示例:

describe (moduleName, testDetails) 由上述代码可看出,describe是可以嵌套的,比如上述代码嵌套的两个describe就可以理解成测试人员希望测试Array模块下的#indexOf() 子模块。module_name 是可以随便取的,关键是要让人读明白就好。it (info, function) 具体的测试语句会放在it的回调函数里,一般来说info字符串会写期望的正确输出的简要一句话文字说明。当该it block内的test failed的时候控制台就会把详细信息打印出来。一般是从最外层的describe的module_name开始输出(可以理解成沿着路径或者递归链或者回调链),最后输出info,表示该期望的info内容没有被满足。一个it对应一个实际的test caseassert.equal (exp1, exp2) 断言判断exp1结果是否等于exp2, 这里采取的等于判断是== 而并非 === 。即 assert.equal(1, ‘1') 认为是True。这只是nodejs里的assert.js的一种断言形式,下文会提到同样比较常用的should.js。如果exp1和exp2均为字符串,字符串比较出错时则控制台会用颜色把相异的部分标出来。

Asynchronous

Frist step 中的代码显然是个 Synchronous 的代码,那么对于异步代码应该怎么做呢?很简单,在你最深处的回调函数中加done()表示结束。

done ()<br> 按照瀑布流编程习惯,取名done是表示你回调的最深处,也就是结束写嵌套回调函数。但对于回调链来说done实际上意味着告诉mocha从此处开始测试,一层层回调回去。

上例代码是test pass的,我们尝试把test.ls改成不存在的test.as。便会返回具体的错误位置。

这里可能会有个疑问,假如我有两个异步函数(两条分叉的回调链),那我应该在哪里加done()呢?实际上这个时候就不应该在一个it里面存在两个要测试的函数,事实上一个it里面只能调用一次done,当你调用多次done的话mocha会抛出错误。所以应该类似这样:

NodeJS测试框架mocha入门教程(nodejs test)

Pending

即省去测试细节只保留函数体。一般适用情况比如负责测试框架的写好框架让组员去实现细节,或者测试细节尚未完全正确实现先注释以免影响全局测试情况。这种时候mocha会默认该测试pass。作用有点像Python的pass。

Exclusive && Inclusive

其实很好理解,分别对应only和skip函数。

上面的代码只会有一个test complete, 只有only的会被执行,另一个会被忽略掉。每个函数里只能有一个only。如果是it.skip ,那么该case就会被忽略。

only和skip共用没有什么实际意义,因为only的作用会把skip屏蔽掉。

上面的代码尽管test.as不存在,但是由于skip,依然会显示test complete。

Before && After

单元测试里经常会用到before和after。mocha同时还提供了beforeEach()和afterEach()。这里为方便阅读用livescript表示,!->可理解成function(){}。细节无需细读,只需通过框架了解这几个函数如何使用便可。

由结果可知(after的使用与before同理),

beforeEach会对当前describe下的所有子case生效。before和after的代码没有特殊顺序要求。同一个describe下可以有多个before,执行顺序与代码顺序相同。同一个describe下的执行顺序为before, beforeEach, afterEach, after当一个it有多个before的时候,执行顺序从最外围的describe的before开始,其余同理。

Test Driven Develop (TDD)

mocha默认的模式是Behavior Driven Develop (BDD),要想执行TDD的test的时候需要加上参数,如

mocha -u tdd test.js

前文所讲的describe, it, before, after等都属于BDD的范畴,对于TDD,我们用suite, test, setup, teardown。样例代码如下:

NodeJs测试框架Mocha的安装与使用 Mocha是运行在nodejs和浏览器下的JavaScript的单元测试框架,官方文档在

nodejs实现邮件发送服务实例分享 前段时间,想用python实现发送邮件的服务,用的是smtp,但是不知道为什么一直没有成功,于是想用nodejs尝试下,意外的简单容易。先安装模块:npminstall

Mongoose经常返回e error的原因分析 发现问题最近在工作中遇到了一个问题,在定义了schema之后,每一次save都会报E,但是db.xxx.find()里面根本就没有冲突的条目,什么情况呢?问题分析

标签: nodejs test

本文链接地址:https://www.jiuchutong.com/biancheng/377902.html 转载请保留说明!

上一篇:关于Node.js中Buffer的一些你可能不知道的用法(nodejs fabric)

下一篇:NodeJs测试框架Mocha的安装与使用(nodejs mocha)

  • 计提租赁费用
  • 代扣代缴个人所得税有滞纳金吗
  • 企业运输没有发票
  • 现金流量表填报说明
  • 工程物资什么时候结转到开发成本里面
  • 邮寄文件快递费账务处理
  • 年报中资产总额和所有者权益都填0
  • 付给总机构的管理费可以税前扣除吗
  • 收到采购材料发票的会计分录
  • 民间非营利组织会计报表
  • 应计未计成本税前扣除年限
  • 劳务派遣差额征税税率是多少
  • 补计提去年的增值税
  • 企业接受固定资产投资
  • 汽车维修单位提成比例
  • 有进项无销项会计分录
  • 个人汽车贷款所购车辆
  • 定期存款利息收入现金流
  • 工会经费可以用于哪些支出
  • 低于账面价值出售固定资产时下列哪项会下降
  • 财政返还额度会计分录
  • 跨年度的费用发票可以入账吗
  • 华为手机屏幕变成黑白怎么调回来
  • 公司投资理财产品
  • pb估值是什么意思
  • 冲账备用金的记账凭证怎么填
  • 收到发票怎么入库
  • 长期股权投资凭证
  • 微软不包括
  • Win10 Build 19044.1319(21H1)预览版发布:修复 Bug提高安全性
  • win10远程桌面连接不成功
  • 房地产评估计费
  • 小规模企业有收入吗
  • 图像类别
  • 政府会计制度固定资产折旧哪个月开始计提
  • 虚假财务报表的法律后果
  • 股票发行费用怎么算
  • sload命令
  • 秋日里通往卢浮宫的杜乐丽花园,法国巴黎 (© Brian A. Jackson/Getty Images Plus)
  • 海獭妈妈和新生儿的故事
  • 办公楼改造方案
  • 发放工资时扣除的保险怎么做
  • 交通费补贴与报销的区别
  • 为什么我们认为北京人已经学会使用火
  • _get_osfhandle
  • 进项发票和销项发票金额相同还需要交税金吗
  • 客户的赔偿金会计分录
  • python中sample函数怎么用
  • 印花税可以年底报一次
  • 当月利息发票未开可以先入账吗
  • 医疗机构销售药品是否征收增值税
  • 原材料报废收入账务处理
  • 研发费用加计扣除的条件
  • 因质量问题对方直接扣款也不开票
  • 购进的材料没有发票可以入库吗?
  • 房地产项目开发的基本流程是什么
  • 从外面买回来的鸡蛋能孵出小鸡吗
  • 网络使用费属于办公费吗为什么
  • 包装袋制版费
  • 办公室租金发票可以扺增值税吗
  • 票据包括哪些
  • 暂估入库一直没有发票
  • 新会计准则待摊费用还有吗
  • 会计师事务所工作怎么样
  • 资产负债表不平最简单的方法
  • cndll.dll
  • macOS 10.12.2下PDF崩溃严重怎么回事 macOS 10.12.2下PDF崩溃的原因以及解决办法
  • 进入bios设置u盘启动
  • centos7 ip forward
  • speedmgr.exe - speedmgr是什么进程 有什么用
  • 为什么window10容易发热
  • win7出现蓝屏怎么办
  • fragment的context
  • django的工作原理
  • 完美解决雷电模拟器卡顿
  • javascript的语句
  • unity toggle切换状态
  • 税务局把我拉入黑名单了怎么办
  • 物业管理用房如何缴纳房产税
  • 2022年各大省份录取分数线
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设