前言:

mocha是JavaScript的一种单元测试框架,既可以在浏览器环境下运行,也可以在Node.js环境下运行。

使用mocha,我们就只需要专注于编写单元测试本身,然后,让mocha去自动运行所有的测试,并给出测试结果。


mocha的特点主要有:

既可以测试简单的JavaScript函数,又可以测试异步代码,因为异步是JavaScript的特性之一;

可以自动运行所有测试,也可以只运行特定的测试;

可以支持before、after、beforeEach和afterEach来编写初始化代码。


安装:npm install mocha -g


一个简单的例子:

在项目根目录F:\mocha下,创建test目录,然后编辑第一个测试脚本 test.1.js,具体代码如下:

var expect = require('chai').expect;    //引入断言库

function add(x, y) {

return x + y;

}

module.exports = add;

describe('加法函数的测试',function(){

it('4 加 4 应该等于 8',function(){

expect(add(4,4)).to.be.equal(8);

});

});

打开控制台,在根目录F:\mocha下,运行mocha,得到如下结果:


Mocha支持的断言模块

mocha支持任何可以抛出一个错误的断言模块。例如:should.js、better-assert、expect.js、unexpected、chai等。这些断言库各有各的特点,大家可以了解一下它们的特点,根据使用场景来选择断言库。

上面的测试脚本test.1.js里面,有一句断言:

expect(add(1,1)).to.be.equal(2);

Mocha本身不带断言库,所以必须先引入断言库。引入断言库之前,需安装该断言库npm install chai --save

var expect = require('chai').expect;


Mocha运行测试脚本

本次举例的目录展示:

/test

/test/test.1.js test.2.js test.3.js test.4.js

/test/dir

/test/dir/test.5.js test.6.js

F:\mocha\test

F:\mocha\test\dir

1、运行单个测试脚本

打开控制台,进入test目录,输入命令:

>>mocha test.1.js

运行结果表示,测试脚本通过了测试,一共有1个测试用例,耗时是13毫秒

2、运行多个测试脚本

mocha命令后面紧跟测试脚本的路径和文件名,可以指定多个测试脚本,举例:

>> mocha test.1.js test.2.js test.3.js

运行结果表示,测试脚本通过了测试,一共有3个测试用例,耗时是23毫秒

>> mocha test/test.1.js test/test.2.js test/test.3.js

运行结果表示,测试脚本通过了测试,一共有3个测试用例,耗时是21毫秒

3、Mocha默认运行test子目录里面的测试脚本

>>mocha

运行结果表示,测试脚本通过了测试,一共有4个测试用例,耗时是26毫秒

4、test子目录下有目录分组,需加上--recursive参数。Mocha默认只执行test子目录下面第一层的测试脚本,不会执行更下层的测试脚本。

>>mocha --recursive  (执行test目录下面所有的测试脚本。包含子目录dir下面的所有测试脚本)

运行结果表示,测试脚本通过了测试,一共有6个测试用例,耗时是35毫秒

5、使用通配符,同时指定多个文件

指定运行test目录下面文件后缀名为js的测试脚本

>>mocha test/*.js

运行结果表示,测试脚本通过了测试,一共有4个测试用例,耗时是25毫秒


备注:官方文档地址:http://mochajs.org/
感兴趣的童鞋,可进入官方查看更多介绍~~~

Mocha 单元测试框架简介的更多相关文章

  1. 【node】----mocha单元测试框架-----【巷子】

    1.mocha简介 单元测试是用来对一个模块.一个函数.或者一个类来进行正确性的检测工作   特点:      既可以测试简单的JavaScript函数,又可以测试异步代码,           可以 ...

  2. javascript单元测试框架mochajs详解

    关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...

  3. javascript单元测试框架mochajs详解(转载)

    章节目录 关于单元测试的想法 mocha单元测试框架简介 安装mocha 一个简单的例子 mocha支持的断言模块 同步代码测试 异步代码测试 promise代码测试 不建议使用箭头函数 钩子函数 钩 ...

  4. 前端单元测试框架-Mocha

    引言 随着前端工程化这一概念的产生,项目开发中前端的代码量可谓是'急剧上升',所以在这种情况下,我们如何才能保证代码的质量呢,对于框架,比如React.Vue,因为有自己的语法规则,及时每个开发人员的 ...

  5. 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用

    转 单元测试及框架简介 --junit.jmock.mockito.powermock的简单使用 2013年08月28日 14:33:06 luvinahlc 阅读数:6413 标签: 测试工具单元测 ...

  6. 【Pytest】python单元测试框架pytest简介

    1.Pytest介绍 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高.根据pytest的官方网站介绍 ...

  7. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  8. Google C++单元测试框架GoogleTest(总)

    之前一个月都在学习googletest框架,对googletest的文档都翻译了一遍,也都发在了之前的博客里,另外其实还有一部分的文档我没有发,就是GMock的CookBook部分:https://g ...

  9. Google C++单元测试框架GoogleTest---GMock的CheatSheet文档

    CheatSheet文档中包含了GMock所有常用的东西,看了这个基本上就可以用它了,本文接上篇博文:Google C++单元测试框架GoogleTest---Google Mock简介--概念及基础 ...

随机推荐

  1. 关于在Win10的Windows功能中没有IE11的问题

    大概是用Win7的时候把IE关掉了,升级Win10之后就发现IE不见了,在Windows功能里面也没有:最近因为某些原因需要用到IE,还是用的虚拟机. 网上找到的方法普遍是执行命令:FORFILES ...

  2. Hadoop HBase概念学习系列之HMaster服务器(四)

    每台HRegion服务器都会和HMaster服务器通信,HMaster的主要任务就是告诉每个HRegion服务器它要维护哪些HRegion. 当一台新的HRegion服务器登录到HMaster服务器时 ...

  3. java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)

    java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...

  4. 团队作业——Alpha冲刺 6/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:编辑界面完成标题栏的开发,以及与已经完成gallery开发的同学,商讨我负责的界面中,图片滑动的具体措施. 明日任务:除了图像识别内容嵌入 ...

  5. linux 删除指定日期之前的文件

    两种方法: 1. 在一个目录中保留最近三个月的文件,三个月前的文件自动删除. find /email/v2_bak -mtime +92 -type f -name *.mail[12] -exec ...

  6. Netty入门(二)时间服务器及客户端

    在这个例子中,我在服务器和客户端连接被创立时发送一个消息,然后在客户端解析收到的消息并输出.并且,在这个项目中我使用 POJO 代替 ByteBuf 来作为传输对象. 一.服务器实现 1.  首先我们 ...

  7. linux(centos 7) 下安装nodejs

    1,到node官网下载linux版本,有32和64位版本 2,将文件上传到linux下 3,使用tar -xvf node-v8.9.3-linux-x64.tar.xz 进行解压 4,建立软连接,变 ...

  8. __init__函数

    初始化函数,类似于c++的构造函数 在创建一个对象时默认被调用,不需要手动调用.self后面接的形参,在类实例化的时候必须传递,__init__函数里的参数都属于成员变量

  9. 一兄弟把/etc/init.d/functions误删除了,这是多么悲催的节奏啊;

    RPM resource /lib/lsb/init-functions /lib/lsb/init-functions vs. /etc/init.d/functions in init scrip ...

  10. 如何快速找到某个研究领域的所有SCI期刊

    https://www.toutiao.com/a6624332265285485060/?tt_from=dingtalk&utm_campaign=client_share&tim ...