mocha单元测试简易教程
mocha单元测试简易教程
写在前面
其实mocha单元测试的教程网上有很多,也都很简单易懂,但是每个人对同一份的教程也会产生不同的理解,像我这种大概就是走遍了所有弯路才到达终点的人,想通过给大家分享一下自己的实践过程,希望有人能从我这得到收获
教程参考
安装
以下安装文件大小都在10-20M之间,您可以快速的完成安装过程
- Node.js
因为mocha安装依赖Node,所以在下载mocha前先在官网下载Node.js,Node下载安装几乎是一路傻瓜next,如想确保安装的正确性,请参考nodejs详细安装步骤。 - mocha
mocha安装请到测试框架 Mocha 实例教程,这里面提供了几个demo,可以确保您在一步步测试样例中熟悉mocha单元测试步骤
单元测试
- 在单元测试前我们需要:一个js文件和一个test.js文件。
js文件中存放您需要测试的函数,test.js存放您对js文件的测试。这里使用上面讲到的demo中的一个做样例讲解。
假设要实现如下下加法运算,您可以将函数存在add.js中
function add(x, y) {
return x + y;
}
进行单元测试前需在函数尾部加module.exports = add;将需要测试的函数暴露出去,前面的"use strict";是标准设置
"use strict";
function add(x, y) {
return x + y;
}
module.exports = add;
然后创建add.test.js文件,这个文件可以跟js文件放在一个目录下,也可以在js文件所在目录再创建一个test文件夹,将add.test.js存放在test文件夹中。两种形式最后都是在js所在目录下运行mocha。
以下为add.test.js中的简易测试内容,其中describe的第一个参数是对测试的描述,it中的第一个参数是对测试结果的描述
/*以下为固定格式,其中require中内容及变量按照您要测试的函数命名*/
"use strict";
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);
});
});
- 进行单元测试
打开cmd窗口,进入add.js所在目录
输入
npm install mocha -g
npm install --save-dev chai
第二条尤其注意,您可能在前面已经安装了全局chai如下,但是要进行mocha单元测试需要在js所在目录下安装局部chai,否则会报错Error: Cannot find module 'chai'
npm install chai -g
接下来就是还有一个注意点,如果您将js和test.js文件放在一个目录下,test.js的require书写如下
var add = require('./add.js');//根据函数名命名参数
就在cmd输入mocha add.test.js如下进行单元测试

如果是将test.js文件放入test文件夹中,test.js的require书写如下,区别在于add.js前面"."的个数
var add = require('../add.js');//根据函数名命名参数
cmd直接输入mocha运行如下

单元测试完成
mocha单元测试简易教程的更多相关文章
- Intellj IDEA 简易教程
Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...
- 生活科技两相宜:(一)Win7使用微软SkyDrive网盘简易教程
今天得写一个Win7使用微软SkyDrive网盘的简易教程,主要是给我老婆看,顺便贴出来给大家共享一下:) 使用微软SkyDrive网盘有两个层次.一个是使用网页版,这个跟使用163或者QQ网盘 ...
- JavaScript简易教程(转)
原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...
- Emacs简易教程
Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: ...
- 文件上传利器SWFUpload入门简易教程
凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...
- 【转】Delphi内嵌ASM简易教程
Delphi内嵌ASM简易教程 作者:heiying2006-03-19 18:33分类:默认分类标签: 前言 Delphi作为一个快速高效的开发平台,使用的人越来越多,但熟悉在Delphi代码中嵌入 ...
- Ant 简易教程
转载:http://www.cnblogs.com/jingmoxukong/p/4433945.html Ant 简易教程 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动 ...
- MetaProducts Offline Explorer使用简易教程
MetaProducts Offline Explorer使用简易教程 by windtrace 20170419 最近想下载一个网站上的内容打包成chm文件,以便离线浏览,webzip太长时间不更 ...
- Zabbix实战-简易教程系列
一.基础篇(安装和接入) Zabbix实战-简易教程--总流程 Zabbix实战-简易教程--整体架构图 Zabbix实战-简易教程--DB安装和表分区 Zabbix实战-简易教程--Server端 ...
随机推荐
- CSS-盒模型与文本溢出笔记
注意点: 文本居中: text-align:center:文本左右居中 line-heigh:30px; 等于容器高度时,单行文本上下居中 margin:0 auto: 浏览器居中 清除margin ...
- idea中log4j的简单使用
首先,我们需要建立一个 maven 项目 (如果你没有配置maven 请参考https://www.cnblogs.com/PerZhu/p/10714077.html配置) 接下来开始配置 pom. ...
- Mysql 常见数据类型及约束
Mysql 常见数据类型及约束 最近在跟几个不太懂技术的同事(哈哈, 其实我也不懂), 要整一个数据库项目, 然后前端, 后端, 都没有像样的, 数据输出还不是由我们控制.... 这可难受了, 然后总 ...
- JS 小工具 MYSQL WHERE IN条件 去掉换行符(列转行)
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- SpringBoot整合定时任务和异步任务处理
SpringBoot定时任务schedule讲解 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类 timer:配置比较麻烦,时间延后问题, ...
- 使用10046追踪执行计划demo
(一)开启10046追踪 SQL> alter session set events '10046 trace name context forever,level 12'; (二)执行sql语 ...
- 查看Windows系统进程(PID)
语法:tasklist /svc 作用:打印系统进程,并显示其对应PID,可用来跟踪进程并根据PID来进行关闭.
- android studio中为gradle指定cmake版本
Android Studio相当于是Intellij基础上写了一个AS插件,这个插件使用gradle作为构建系统,因此构建出现问题先考虑gradle的文档. gradle可以使用native buil ...
- 【异常(待解决)】org.apache.http.NoHttpResponseException: api.weixin.qq.com:443 failed to respond
一.记录下异常堆栈信息 -- ::-exec-] ERROR weixin.popular.client.LocalHttpClient - execute error org.apache.http ...
- Eclipse经常出现未响应问题
修改eclipse.ini文件 -startupplugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar--launcher.libr ...