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单元测试简易教程的更多相关文章

  1. Intellj IDEA 简易教程

    Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...

  2. 生活科技两相宜:(一)Win7使用微软SkyDrive网盘简易教程

    今天得写一个Win7使用微软SkyDrive网盘的简易教程,主要是给我老婆看,顺便贴出来给大家共享一下:)    使用微软SkyDrive网盘有两个层次.一个是使用网页版,这个跟使用163或者QQ网盘 ...

  3. JavaScript简易教程(转)

    原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...

  4. Emacs简易教程

    Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: ...

  5. 文件上传利器SWFUpload入门简易教程

    凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...

  6. 【转】Delphi内嵌ASM简易教程

    Delphi内嵌ASM简易教程 作者:heiying2006-03-19 18:33分类:默认分类标签: 前言 Delphi作为一个快速高效的开发平台,使用的人越来越多,但熟悉在Delphi代码中嵌入 ...

  7. Ant 简易教程

    转载:http://www.cnblogs.com/jingmoxukong/p/4433945.html Ant 简易教程 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动 ...

  8. MetaProducts Offline Explorer使用简易教程

    MetaProducts Offline Explorer使用简易教程 by windtrace  20170419 最近想下载一个网站上的内容打包成chm文件,以便离线浏览,webzip太长时间不更 ...

  9. Zabbix实战-简易教程系列

    一.基础篇(安装和接入) Zabbix实战-简易教程--总流程  Zabbix实战-简易教程--整体架构图 Zabbix实战-简易教程--DB安装和表分区 Zabbix实战-简易教程--Server端 ...

随机推荐

  1. 如何统一管理单个任务下所有API的同步情况?

    1. 一分钟完成单个API配置 单个API的配置包含:API名称.URL地址.请求方式.参数设置.自定义高级设置. 参数允许用户填写:Text.WebService.Timestamp.DependO ...

  2. webpack练手项目之easySlide(二):代码分割

    Hello,大家好. 在上一篇 webpack练手项目之easySlide(一):初探webpack  中我们一起为大家介绍了webpack的基本用法,使用webpack对前端代码进行模块化打包. 但 ...

  3. React-Native中使用到的一些JS特性

    React Native - 调试技巧及调试菜单说明(模拟器调试.真机调试) https://www.hangge.com/blog/cache/detail_1480.html 1,解构赋值——de ...

  4. Flask入门很轻松 (二)

    转载请在文章开头附上原文链接地址:https://www.cnblogs.com/Sunzz/p/10959454.html 请求钩子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比 ...

  5. GDI双缓冲

    GDI双缓冲 翻译自Double buffering,原作者Dim_Yimma_H 语言:C (原文写的是C++,实际上是纯C) 推荐知识: 构建程序 函数 结构体 变量和条件语句 switch语句 ...

  6. 05-jQuery介绍

    本篇主要介绍jQuery的加载.jquery选择器.jquery的样式操作.jQuery的事件.jquery动画等相关知识. 一.jQuery介绍 jQuery是目前使用最广泛的javascript函 ...

  7. 前端cdn库推荐

    后端编程人员,有时作功能调试时会用到jquery.layer等的前端库文件,用得较多的我们可以下载下来放到自己的电脑上,有些偶尔使用一次的类库插件就没必要全都下载下来,毕竟不用的类库多了,自己找到它都 ...

  8. Cloudera Certified Associate Administrator案例之Install篇

    Cloudera Certified Associate Administrator案例之Install篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建主机模板(为了给主 ...

  9. JSON.stringify(),JSON.parse(),toJSON()使用方法总结

    今天在看<你不知道的javascript-中>第四章‘强制类型转换’的时候,发现JSON.stringify(),JSON.parse(),toJSON()有很多细节,自己也就总结测试了一 ...

  10. 删除WordPress菜单wp-nav-menu中li的class或id样式

    我们都知道wordpress已经集成了一些通用的css样式,比如wp-nav-menu菜单会有很多的class,不想看到那么多的选择器,想要清净的世界要如何操作呢?随ytkah一起来看看 <li ...