下面是源码目录结构

一、安装依赖

npm init
npm install --save-dev mocha
npm install --save-dev chai
npm install --save-dev @types/mocha
npm install --save-dev @types/chai

二、编写es5规范的测试案例

在lib下新建add.js

var add = function(a,b){return a + b;
}
module.exports= add;

在test下新建 add.test.js,describe 也称为test suite,即“测试套件”,是可以嵌套的。一个describe可以有多个it,一个it代表一个测试用例。it里面又可以有多个expect,当然expect是chai 暴露出来的一种接口形式,我们也可以使用Assert、Should。

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

在package.json的script下新加 “test”: “mocha ./test/*.js”

"scripts": {"test": "mocha ./test/*.js"}

然后执行npm run test,会看到控制台输出如下时就表示这个测试案例通过了


这样就完成了一个es5规范的js的测试,那接下来问题来了,对于es6的我们该怎么处理,请看下面

三、编写es6的测试案例

在lib下新建es6.js

let square = function(n){return n*n;
};
export default  square;

test下编写测试代码es6.test.js

import square from "../lib/es6";
let expect = require("chai").expect;describe('square函数测试',function(){it('2的平方应该等于4',function(){expect(square(2)).to.be.equal(4);})
})

这时候直接运行npm run test会报错,对于es6预发我们需要使用babel-register模块

首先安装一下

npm install --save-dev babel-register
npm install --save-dev babel-preset-env

babel-preset-env依赖包的作用可以参考下这个文档
https://www.cnblogs.com/ye-hcj/p/7070084.html

然后修改一下package.json的script

"scripts": {"test": "mocha  -r babel-register ./test/*.js"}

创建.babelrc文件

{"presets": [["env"]]
}

在执行npm run test就可成功执行针对es6的测试案例

四、编写typescript测试案例

在lib下新建helloTs.ts,test下编写测试代码helloTs.test.ts

function hello():string{return 'hello World';
}
export default hello;
import hello from '../lib/helloTs';
import {expect} from 'chai';
import 'mocha';describe("hello function测试",function(){it('应该返回hello world',function(){const result = hello();expect(result).to.equal("hello World");})
})
npm install --save-dev typescript
npm install --save-dev ts-node

然后修改一下package.json的script,新加一条"testTs": “mocha -r ts-node/register ./test/*.ts”,当然要想处理typescript需要先安装typescript、ts-node模块

package.json的script变为

"scripts": {"test": "mocha  -r babel-core/register ./test/*.js","testTs": "mocha -r ts-node/register ./test/*.ts"},

然后执行npm run testTs即可

参考博客:https://blog.csdn.net/weixin_39678029/article/details/86094517 因为原博客有一些bug,上面我有一些改动

mocha测试js教程(涉及es6、ts)相关推荐

  1. PHP开发者的JavaScript快速教程(phper简明js教程)

    本文提供word格式文档,下载链接: https://pan.baidu.com/s/1CcM2Dl4_rG0qe0omxPG8zQ 提取码: 9isx 前言: 每一位PHP开发者或多或少的都掌握一些 ...

  2. 10+ 最佳的 Node.js 教程和实例

    如果你正在找Node.js的学习资料及指南,那么请继续(阅读),我们的教程将会覆盖即时聊天应用.API服务编写.投票问卷应用.人物投票APP.社交授权. Node.js on Raspberry Pi ...

  3. Noejs Mocha测试框架

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

  4. ES6 极简教程(ES6 Tutorial) 文 / 东海陈光剑

    ES6 极简教程(ES6 Tutorial) 文 / 东海陈光剑 ECMAScript简介 JavaScript是ECMAScript的实现和扩展,由ECMA(一个类似W3C的标准组织)参与进行标准化 ...

  5. Protractor AngularJS测试框架教程

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

  6. 李炎恢 js教程 拖拽上 思路解析

    李炎恢再讲js教程 拖拽上 讲到一个登录框,通过鼠标移动登录框到浏览器各个地方,我们现在对李炎恢的怎么想出进行分析: 问题期望是什么? 1.我们通过鼠标点击登录框,然后登录框被移动,松开鼠标,停止移动 ...

  7. Three.js教程:三维坐标系

    推荐:将 NSDT场景编辑器 加入你的3D工具链 其他系列工具: NSDT简石数字孪生 三维坐标系 本节课的目的就是为了加强大家对threejs三维空间的认识. 辅助观察坐标系 THREE.AxesH ...

  8. Vue.js教程-Vue项目的目录结构和.vue文件的构成

    Vue.js教程-Vue项目的目录结构和.vue文件的构成 前言 Vue项目的目录结构(Vue-cli3/4版本) .vue文件的构成 Html区域(template) script区域 export ...

  9. Vue.js教程-组件化开发

    Vue.js教程-组件化开发 前言 Vue组件化 什么是组件化 Vue单页面开发的解释 组件化思想 组件的使用 原理 实际开发中的使用-父子组件 父子组件传递数据 父传子-props用法 子传父-th ...

最新文章

  1. paypal提现软件_PayPal软件工程师生命中的一天
  2. OS X终端颜色[关闭]
  3. 浅析制造业物料编码在ERP系统中的实施
  4. linux中tcp连接内核参数调优somaxconn
  5. Linux文件系统命令 cat
  6. ocp 043 第十三章:管理资源
  7. 标示符和关键字的总结--希望别再犯错
  8. UIView中常用的方法
  9. 设置MYSQL数据库编码为UTF-8
  10. 【manacher】Strings in the Pocket
  11. RDS 设置 group_concat的长度限制 1024 改为 102400
  12. 共享单车变身“行走的弹幕”,清华大学等17所高校均有投放
  13. 产品经理之深度学习促进产品之分类(三)
  14. 前端—每天5道面试题(5)
  15. Espresso unit test的输入法问题
  16. hbase windows 单机版安装
  17. 经纬度PLT文件格式说明
  18. 36. linux系统日志在哪里看
  19. 动漫制作都用html5吗,怎么制作h5动画?
  20. 在服务器系统Windows 2003安装Avira AntiVir小红伞免费中文版

热门文章

  1. 《Catalysis Clustering with GAN by Incorporating Domain Knowledge》论文精读分析
  2. 奥维查看行政边界_百度地图获取行政范围边界
  3. ThinkPad X201 笔记本通过硬盘安装 Ubuntu 双系统
  4. 知网的html查重报告看不了,知网查重报告单怎么看
  5. 分享分析TCGA的数据库——GEPIA(一)
  6. Android支付宝错误码62009,hb混合开发app 微信支付提示支付宝62009未知错误
  7. keras中EarlyStopping
  8. 视频点播RTMP推流直播流媒体服务二次开发集成接口
  9. 小议并实战go包------顺便说说go中的GOROOT,GOPATH和src,pkg,bin
  10. Manjaro下安装坚果云后登录界面空白解决方法