前言:

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. 实现一个协程版mysql连接池

    实现一个协程版的mysql连接池,该连接池支持自动创建最小连接数,自动检测mysql健康:基于swoole的chanel. 最近事情忙,心态也有点不积极.技术倒是没有落下,只是越来越不想写博客了.想到 ...

  2. Linux启动一个服务后,服务的某个文件所在的目录下出现类似:systemd-private.xxxxxx的目录

    Linux的目录下面形如: [root@:vg_adn_tidbCkhsTest:172.31.17.203 /var/lib/mysql]#ll /tmp total drwxr root root ...

  3. Hadoop HBase概念学习系列之HRegion服务器(三)

    所有的数据库数据一般是保存在Hadoop分布式系统上面的,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegion也只会被一个HRe ...

  4. 【Ansible 文档】【译文】模式

    Patterns 模式 Ansible中的模式是指我们如何决定那些机器执行管理操作.这里意味着与那些主机通信,但是对于playbook,它是指哪些主机应用特定的配置或执行特定程序. 我们将重温一下In ...

  5. Maven 安装源码和文档到本地仓库

    一: 1:   mvn source:jar 生成源码的jar包 2: mvn source:jar install 将源码安装到本地仓库 ,可以直接mvn source:jar install 一部 ...

  6. webservice 客户端调用

    /** * 通过webserevice下发工单 * @param url * @param method * @param requestMap * @return * @throws Service ...

  7. 纯css实现弹窗左右垂直居中效果

    1.HTML <div class="container"> <div class="dialog"> <div class=&q ...

  8. JavaScript函数注意点

    1.return 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑. 如果没有return语句,函数执行 ...

  9. C++之语言概述

    C++语言是广泛使用的程序设计语言之一,因其特有的优势在计算机应用领域占有重要一席. C语言的发展 20世纪70年代初,贝尔实验室的Dennis Richie 等人在B语言基础上开发出C语言,最初是作 ...

  10. iOS11 Xcode 9 按住command 单击 恢复到从前(直接跳转到定义)

    iOS11 Xcode 9  按住command 单击 恢复到从前(直接跳转到定义)   2017年9月20日,苹果如期推送 Xcode 9 和 iOS 11的更新. Xcode 9正式版与之前bet ...