全局安装

npm install --global mocha

测试脚本与所要测试的源码脚本同名,但是后缀名为.test.js(表示测试)或者.spec.js(表示规格)。比如,add.js的测试脚本名字就是add.test.js。

// add.test.js
var add = require('./add.js');
var expect = require('chai').expect;describe('加法函数的测试', function() {it('1 加 1 应该等于 2', function() {expect(add(1, 1)).to.be.equal(2);});
});

上面这段代码,就是测试脚本,它可以独立执行。测试脚本里面应该包括一个或多个describe块,每个describe块应该包括一个或多个it块。

describe块称为"测试套件"(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称("加法函数的测试"),第二个参数是一个实际执行的函数。

it块称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称("1 加 1 应该等于 2"),第二个参数是一个实际执行的函数。

断言库

所谓"断言",就

所有的测试用例(it块)都应该含有一句或多句的断言。它是编写测试用例的关键。断言功能由断言库来实现,Mocha本身不带断言库,所以必须先引入断言库。


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

断言库有很多种,Mocha并不限制使用哪一种。上面代码引入的断言库是chai,并且指定使用它的expect断言风格。

expect断言的优点是很接近自然语言,下面是一些例子。


// 相等或不相等
expect(4 + 5).to.be.equal(9);
expect(4 + 5).to.be.not.equal(10);
expect(foo).to.be.deep.equal({ bar: 'baz' });// 布尔值为true
expect('everthing').to.be.ok;
expect(false).to.not.be.ok;// typeof
expect('test').to.be.a('string');
expect({ foo: 'bar' }).to.be.an('object');
expect(foo).to.be.an.instanceof(Foo);// include
expect([1,2,3]).to.include(2);
expect('foobar').to.contain('foo');
expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo');// empty
expect([]).to.be.empty;
expect('').to.be.empty;
expect({}).to.be.empty;// match
expect('foobar').to.match(/^foo/);

是判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。

基本上,expect断言的写法都是一样的。头部是expect方法,尾部是断言方法,比如equala/anokmatch等。两者之间使用toto.be连接。

如果expect断言不成立,就会抛出一个错误。事实上,只要不抛出错误,测试用例就算通过。


it('1 加 1 应该等于 2', function() {});

上面的这个测试用例,内部没有任何代码,由于没有抛出了错误,所以还是会通过。

执行mocha

mocha add.test.js

可能出现报错

可以在命令行输入下面一行

 npm install --save-dev chai

然后再次执行mocha add.test.js就不报错了

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


mocha file1 file2 file3

直接输入mocha

Mocha默认运行test子目录里面的测试脚本。所以,一般都会把测试脚本放在test目录里面,然后执行mocha就不需要参数了

mocha

Mocha默认只执行test子目录下面第一层的测试用例,不会执行更下层的用例,为了改变这种行为,就必须加上--recursive参数

mocha --recursive

mocha测试框架使用相关推荐

  1. Noejs Mocha测试框架

    ㅤㅤㅤ ㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(不应当急于求成,应当去熟悉自己的研究对象,锲而不舍,时间会成全一切.凡事开始最难,然而更难的是何以善终.--莎士比亚) ㅤㅤㅤ ㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤ ...

  2. Truffle测试框架

    Truffle测试框架 Truffle 有一个标准的自动化测试框架,让你可以非常方便地测试您的合约.这个框架允许您以两种不同的方式编写简单可控的测试: 1. 在JavaScript中, 用于执行来自外 ...

  3. Protractor AngularJS测试框架教程

    Protractor是一个建立在WebDriverJS基础上的端到端(E2E)的AngularJS JavaScript Web应用程序测试框架.Protractor全自动化真实的模拟用户在真正的浏览 ...

  4. javascript测试框架mocha

    node测试框架mocha 简单.灵活.有趣,mocha是一个功能丰富的javascript测试框架,运行在node和浏览器中,使异步测试变得更加简单有趣.http://mochajs.org/ 安装 ...

  5. mocha检测c语言,前端测试框架mocha使用小结

    安装 npm i -g mocha npm i chai -D //断言库 模块测试 比如有一个add函数 //add.js function add(a, b){ return a + b } mo ...

  6. testem方便的web tdd 测试框架使用

    备注: 单元测试,对于日常的开发是比较重要的,testem 简化了我们的代码编写,以及运行. 主要特性: a. 支持的测试框架有:jasmine quint mocha buster.js ,同时也包 ...

  7. e2e测试框架之Cypress

    谈起web自动化测试,大家首先想到的是Selenium!随着近几年前端技术的发展,出现了不少前端测试框架,这些测试框架大多并不依赖于Selenium,这一点跟后端测试框架有很大不同,如Robot Fr ...

  8. 测试框架 Jest 实例教程

    Jest 是由 Facebook 开源出来的一个测试框架,它集成了断言库.mock.快照测试.覆盖率报告等功能.它非常适合用来测试 React 代码,但不仅仅如此,所有的 js 代码都可以使用 Jes ...

  9. 【Karma】多环境自动测试框架 -- 基础教程

    介绍 前身 Testacular, AngularJs Team 创建出来的. 以下是官网对Karma的相关特点介绍 支持真实浏览器, 无浏览器PhantomJS 热更新,文件变化后自动测试 测试框架 ...

  10. mocha 测试 mysql_node项目mocha自动化测试的疑问

    测试框架:mocha 数据库:mysql和mongodb 疑问1. 如何控制多个测试用例的运行顺序?用例写多了,A用例把数据变成了状态1,有些后面的用例基于这个状态1的数据进行查询判断,才能使得后面的 ...

最新文章

  1. Linux下的权限掩码umask
  2. Java8 中用法优雅的 Stream 性能也优雅吗?
  3. MyEclipse9安装Checkstyle5.5插件(图解)
  4. 6-3 求链表的倒数第m个元素
  5. Win10 Bash/WSL调试Linux环境下的.NET Core应用程序
  6. 微信小程序——评论点赞功能
  7. 3500常用汉字书法体检测数据集
  8. 利用Netica训练简易贝叶斯网络模型【教程】
  9. Linux部署SSM项目
  10. Dijkstra最短路算法
  11. python视频补帧_视频补帧软件(DAIN APP)软件下载_视频补帧软件(DAIN APP)v0.40官方版 - Windows10系统之家...
  12. BigDecimal
  13. android mmm 编译错误,Android 7.1 使用mmm编译模块失败
  14. 一个int类型到底占多少个字节?
  15. MongoDB的可视化工具Robo 3T安装
  16. 2022年8月29日 勒索病毒大爆发
  17. 生活娱乐 怎么治疗冻疮 有特效
  18. 软考 | 2018年上半年 软件设计师 下午试卷
  19. 2020年熔化焊接与热切割模拟考试系统及熔化焊接与热切割考试试题
  20. 一文读懂LWD随钻测井技术

热门文章

  1. 智能手环APP软件开发
  2. WordPress缩略图出现A TimThumb error has occured解决办法
  3. 取得目录和取得操作系统盘符以及获取系统盘可用空间
  4. 百度人脸识别之人脸注册AddUser
  5. OPENSSL的安装使用
  6. Springboot+基于知识图谱的短视频推荐系统设计与实现 毕业设计-附源码231115
  7. 香农公式说明了什么_香农定理到底有什么含义?能通俗地解释一下么?
  8. 领英问题问答--有关领英各类问题整理,置顶推荐
  9. Vue-Router给当前url添加参数时报错 Navigation Duplicated Avoided redundant navigation to current location
  10. Port Forwarding in Windows