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运行如下

单元测试完成

原文地址:https://www.cnblogs.com/-yyl/p/11704945.html

时间: 2024-11-04 07:19:43

mocha单元测试简易教程的相关文章

nodejs mocha 单元测试

用mocha进行单元测试 首先搭建环境 1.安装mocha sudo npm install -g mocha 2.在模块装添加should,package.json添加"shoud":"*",然后npm install 如何测试 1.首先要在带测试文件中引入should require('should'),然后根据教程编写程序 2.mocha file 就可以对js文件进行测试了,但如果你的是coffee文件,那必须指定用什么语法解析 具体命令行: mocha -

BIND简易教程(1):安装及基本配置

首先,为什么说是简易教程呢?因为BIND的功能实在太多,全写出来的话要连载好久,我觉得我没有那么多精力去写:而我了解的仅仅是有限的一点点,不敢造次.百度上的文章也是一抓一大把呐!所以,教点基本使用方法,有需求的同学可以再翻翻BIND管理员手册.那么,还是直接开始说正题吧.本次还是像PowerDNS一样是一个连载,写三篇. 目录:BIND简易教程(1):安装及基本配置(本篇)BIND简易教程(2):BIND视图配置(待续)BIND简易教程(3):DNSSec配置(待续) 首先说说安装.安装是非常简

Emacs简易教程

Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: 输入"C-x u" 或输入"C-_" 这里,"C-_"比较好输入一些(好像C--也行),但是有的键盘上面没有"_"就只能输入“C-x u”了,撤销动作能进行20次. *向上翻页: 输入"M-v" 这里,右手的

CCS2.2基于软件仿真简易教程(汇编)

CCS2.2基于软件仿真简易教程(汇编) Rev 1.0 Writer Nirvana Silence 配置目标芯片 打开此图标 导入配置,生成gel文件,导入点击close 然后关闭 保存changes 启动工程软件 新建工程.asm文件,添加到工程 新建文件 保存为汇编格式 添加到工程 编写程序,编译程序,load程序 在新建的ASM文件中输入以下程序,查看运行后(1030H).(1040H).*AR3,AR4的值 记得助记符前面至少要有一个空格 编译 没有问题,load .out文件 打开

getopts简易教程(Small getopts tutorial)译文(未完成)

getopts简易教程 当你想用一种专业的方式解析命令行参数时,getopts就是要选择的工具.和它的旧版本兄弟命令getopt不同(注意没有s!),getopts是shell内置命令.高级地方表现在 你不需要通过一个外部命令传递参数 getopts可以很容易的设置一些你能用于解析参数的变量(对于一个外部程序来说这是不可能的!) 你不必再处理过去一些使用getopt时的一些bug实现(空格, -) getopts已经在POSIX?定义 一些其他解析位置参数的其他方法(不用getopt(s))在这

Android实战简易教程-第四十枪(窃听风云之短信监听)

近期在做监听验证码短信自己主动填入的功能,无意间想到了一个短信监听的办法. 免责声明:短信监听本身是一种违法行为,这里仅仅是技术描写叙述.请大家学习技术就可以.(哈哈) 本实例是基于bmob提供的后台服务,将监听到的短信自己主动上传到bmob数据库中. 一.代码实现: 1.首先实现javabean对象. package com.example.messagecut; import cn.bmob.v3.BmobObject; public class MsgContent extends Bmo

移动开发之【微信小程序】的原理与权限问题以及相关的简易教程

这几天圈子里到处都在传播着这样一个东西,微信公众平台提供了一种新的开放能力,开发者可以快速开发一个小程序,取名曰:微信公众平台-小程序 据说取代移动开发安卓和苹果,那这个东东究竟是干吗用的?但很多人觉得是网页版应用. 有的人很鸡冻,但是--最后文章会提及具体的权限开放问题,所以,还是保持一颗冷静的?比较好. 那我们先来看看组件和API开放了哪些服务: 视图容器:视图(View).滚动视图.Swiper 基础内容:图标.文本.进度条 表单组件:按钮.表单等等 操作反馈 导航 媒体组建:音频.图片.

BIND简易教程(2):BIND视图配置

目录:BIND简易教程(1):安装及基本配置BIND简易教程(2):BIND视图配置(本篇)BIND简易教程(3):DNSSec配置 上文书说到,我们把aaa.apple.tree解析到192.168.4.100.那么世界上任何一个人在请求aaa.apple.tree的时候,解析到的都是这个IP地址,之后,再访问这个域名(当然这个IP地址只是实验的,而且我域名也没注册,除了我内网之外,世界上任何一个人都访问不到).那么问题来了,两个人一个在电信,一个在联通,都想访问这个域名的话,我的服务器要放在

BIND简易教程(3):DNSSec配置

目录:BIND简易教程(1):安装及基本配置BIND简易教程(2):BIND视图配置BIND简易教程(3):DNSSec配置 (本篇) DNSSec,有个半英半中的名字叫DNS安全扩展.说的好听一点,它是对域名进行签名认证,保证域名的完整性和正确性,不会被修改.DNSSec不能防御对DNS服务器的攻击,也不会对请求和应答的数据进行加密,甚至如果你不知道DNSSec这个东西的话,域名是不是完整正确的你也不知道. 实际上,给我的感觉就是,DNSSec是在花很大的力气去配置一个不怎么有用的东西.然并卵