位置: 编程技术 - 正文

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

编辑:rootadmin

推荐整理分享NodeJs测试框架Mocha的安装与使用(nodejs mocha),希望有所帮助,仅作参考,欢迎阅读内容。

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

Mocha是运行在nodejs和浏览器下的JavaScript的单元测试框架,官方文档在 用于测试是否可以通过辅助库,如hook库(测试前后调用某些函数或者方法),异常检查(某些函数在某些参数的情况下抛出异常), 输入组合(支持多排列的参数输入组合)等。支持IDE的集成下面就按照官方文档的顺序来简明扼要的

安装与初步的使用

在控制台窗口中执行下列命令:

可以写如下代码:

回到控制台:

这里mocha会查找当前文件目录下test文件夹下的内容,自动执行。

断定库

这个是判定测试用例是否通过,默认下可以用nodejs的assert库,与此同时,Mocha支持我们使用不同的断定库,现在可以支持下面的断定库,每个断定库的用法有一些差异,自己可以参考相应的文档。

1 should.js( BDD style shown throughout these docs (BDD模式,本文档用的都是这个断定库) 2 better-assert( c-style self-documenting assert()(C-模型下的断定库) 3 expect.js ( style assertions (expect模式的断定库) 4 unexpected( the extensible BDD assertion toolkit 5 chai( expect(), assert() and should style assertions

同步代码

同步代码表示测试的是同步函数,上面的Array相关的例子代码就是。这个比较好理解。

异步代码

只所以有异步代码测试,原因是在nodejs上许多异步函数,如下面的代码中,只有done()函数执行完毕后,该测试用例才算完成

详解describe和it

上面的实例代码比较简单,那么什么是describe和it呢? 大致上,我们可以看出describe应该是声明了一个TestSuit(测试集合) ,而且测试集合可以嵌套管理,而it声明定义了一个具体的测试用例。 以bdd interface为例,具体的源代码如下:

Hooks(钩子)

实际上这个在写unit test是很常见的功能,就是在执行测试用例,测试用例集合前或者后需要某个回调函数(钩子)。Mocha提供了before(),after(), beforeEach() 和aftetEach(),示例代码如下:

hooks还有下列其他用法:

Describing Hooks - 可以对钩子函数添加描述,能更好的查看问题Asynchronous Hooks (异步钩子): 钩子函数可以是同步,也可以是异步的,和测试用例一下,下面是异步钩子的示例代码:

Root-Level Hooks (全局钩子) - 就是在describe外(测试用例集合外)执行,这个一般是在所有的测试用例前或者后执行。Pending Tests (挂起测试)

就是有一些测试,现在还没有完成,有点类似TODO, 如下面的代码:

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

Exclusive Tests (排它测试)

排它测试就是允许一个测试集合或者测试用例,只有一个被执行,其他都被跳过。如下面测试用例集合:

下面是对于测试用例:

需要说明的是,对于Hooks(回调函数)会被执行。

Inclusive Tests(包含测试)

与only函数相反,skip函数,将会让mocha系统无视当前的测试用例集合或者测试用例,所有被skip的测试用例将被报告为Pending。 下面是对与测试用例集合的示例代码:

下面例子是对具体的测试用例:

Dynamically Generating Tests(动态生成测试用例)

其实这个在很多其他的测试工具,如NUnit也会有,就是将测试用例的参数用一个集合代替,从而生成不同的测试用例。下面是具体的例子:

Interfaces(接口)

Mocha的接口系统允许用户用不同风格的函数或者样式写他们的测试用例集合和具体的测试用例,mocha有BDD,TDD,Exports,QUnit和Require 风格的接口。

BDD - 这个是mocha的默认样式,我们在本文中的示例代码就是这样的格式。 其提供了describe(), context(), it(), before(), after(), beforeEach(), and afterEach()的函数,示例代码如下:

TDD - 提供了 suite(), test(), suiteSetup(), suiteTeardown(), setup(), 和 teardown()的函数,其实和BDD风格的接口类似(suite相当于describe,test相当于it),示例代码如下:

Exports - 对象的值都是测试用例集合,函数值都是测试用例。 关键字before, after, beforeEach, and afterEach 需要特别定义。 具体的示例代码如下:

QUnit - 有点像TDD,用suit和test函数,也包含before(), after(), beforeEach()和afterEach(),但是用法稍微有点不一样, 可以参考下面的代码:

Require - 该接口允许我们利用require关键字去重新封装定义 describe ,it等关键字,这样可以避免全局变量。 如下列代码:

上述默认的接口是BDD, 如果想使用其他的接口,可以使用下面的命令行:

mocha -ui 接口(TDD|Exports|QUnit...)

Reporters (测试报告/结果样式)

Mocha 支持不同格式的测试结果暂时,其支持 Spec, Dot Matrix,Nyan,TAP…等等,默认的样式为Spec,如果需要其他的样式,可以用下列命令行实现:

mocha --reporter 具体的样式(Dot Matrix|TAP|Nyan...)

Editor Plugins

mocha 能很好的集成到TextMate,Wallaby.js,JetBrains(IntelliJ IDEA, WebStorm) 中,这里就用WebStorm作为例子。 JetBrains提供了NodeJS的plugin让我们很好的使用mocha和nodeJs。 添加mocha 的相关的菜单,具体配置过程可以参考

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

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

node.js程序作为服务并在windows下开机自启动(用forever) 前言最近项目中有一块服务是用node.js实现的,运行环境是windowsserverR2,刚开始着手实现这块功能的时候时间很紧迫,随便写了个console程序就部署上

标签: nodejs mocha

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

上一篇:NodeJS测试框架mocha入门教程(nodejs test)

下一篇:nodejs实现邮件发送服务实例分享(node发送邮箱)

  • 采购价格含税吗
  • 偷税行为五年后被发现要接受行政处罚吗?
  • 包装物租金要交消费税吗为什么
  • 简易征收的进项税可以抵扣吗
  • 合并报表盈余公积等于母公司盈余公积
  • 税款追征期起算点 增值税重新计算
  • 债券作为交易性金融资产的账务处理
  • 离职未收回货款要我承担
  • 研发费用是否包括增值税
  • 税务大厅补报个税怎样申报
  • 中国公司投资海外有什么限制
  • 收到政府补助怎么发朋友圈
  • 2017年一般纳税人增值税优惠
  • 事业单位固定资产处置流程
  • 生产车间制造费用包括
  • 工地开工购买的鞭炮怎么入账
  • 备孕男的要吃叶酸吗? 已解决
  • WIN7系统的镜像文件在哪里
  • 金税盘减免税款申报的时候怎么填写
  • 公司过年买的鞭炮可以入账吗
  • avgorange是什么文件夹可以删除吗
  • 按销售收入比例分摊进项税额按月还是按年
  • php 调用函数
  • msg0.db是什么文件
  • Vant UI 中 van-collapse 下拉折叠面板如何默认展开第一项
  • vue的安装命令
  • yii2带搜索功能的下拉框实例详解
  • 分公司独立核算和非独立核算哪个好
  • vue前端代码实例
  • gpu版本的pytorch
  • cnn三层
  • 错账的类型及对应的更正方法
  • 一般纳税人补交印花税买卖合同
  • 小规模纳税人增值税税率
  • 公司租入厂房怎么做账
  • 帝国cms建站实例教程
  • 在MysQL数据库中,数据库文件的扩展包括
  • 存货减值税前可抵扣吗
  • 赠送给客户的商品是否要计入费用?
  • 免税收入怎么做会计分录
  • 小规模的认定标准
  • 小规模纳税人购进税控收款机
  • 支付资金占用费的承诺函怎么写
  • 国有资产保值增值率
  • 营改增政策汇总
  • 公益性捐赠会计利润总额计算方法
  • 增加以前年度损益科目报表要改吗
  • 建筑业红字发票如何开
  • 会计的凭证怎么做账
  • 劳务派遣人员能有营业执照吗
  • 会计学主要是学什么
  • sqlserver CONVERT()函数用法小结
  • centos中rpm包怎么安装
  • mac如何设置启动系统
  • ubuntu和debian哪个稳定
  • 要使用windows
  • win8怎么切换hdmi
  • 如何禁止win10系统更新到win11
  • os x10.11el capitan beta2下载地址
  • QuiteRSS: Linux桌面的RSS阅读器 你值得拥有
  • crontab环境变量不生效
  • win7访问共享文件夹没有权限访问
  • win8怎么打开磁盘管理
  • shell脚本mysql
  • python和js哪个好
  • Node.js中的全局对象有
  • vue微信分享功能
  • javascript编程技术
  • js复制对象的值
  • jquery设置边框
  • 大学生活最后的日子
  • js定义数据类型
  • android下拉刷新上拉加载
  • jsp中img标签
  • 电子税务局打印发票提示本机未检测到
  • 银川到大武口的汽车站时刻表
  • 上海嘉定南翔房子
  • 车间租金计入什么会计科目
  • 百旺税控盘怎么安装开票软件
  • 中小微企业包括一般纳税人吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设