1.初步简单的测试

在src新建一个math.js的文件.src/math.js

module.exports ={
add:(...args)=>{
return args.reduce((prev,curr) => {
return prev+curr
})
},
mul:(...args)=>{
return args.reduce((prev,curr) => {
return prev*curr
})
}
}

在与src同级新建一个文件夹test,test里面新建一个simple.js文件  test/simple.js

const {add,mul}=require('../src/math.js')
if(add(2,3)===5){
console.log('add(2,3)===5,ok');
}else{
console.log('add(2,3)!==5,error');
}

运行结果

2.使用assert(断言)来判断是否相等 [ assert.equal() ]  test/simple.js

const assert =require('assert')
const {add,mul}=require('../src/math.js')
// if(add(2,3)===5){
// console.log('add(2,3)===5,ok');
// }else{
// console.log('add(2,3)!==5,error');
// }
assert.equal(add(2,3),5)

 node的断言虽然又一定的语义,,可是这还不够好,目前有几个比较流行断言库Chai Assertion Library

1.使用chai Assertion Library

Step1:安装

cnpm install chai

Step2:修改test/simple.js 有三种方式可以判断是否相等,只需要使用其中一种就可以了

const {should,expect,assert} = require('chai')
const {add,mul}=require('../src/math.js')
//使用should来判断
should();
add(2,3).should.equal(5)
//使用expect判断
expect(add(2,3)).to.be.equal(5)
//使用assert来判断
assert.equal(add(2,3),5)

2.mocha,是一个功能丰富的测试框架,mocha在语义上更加清晰,而且执行结果连正确都会显示,而且还有其他功能,例如只执行就用it.only,跳过就用it.skip,跳过不执行

Step1:安装

npm install --save-dev mocha

Step2:在test里面新建mocha.js

const {should,expect,assert} = require('chai')
const {add,mul}=require('../src/math.js')
describe('#math',()=>{
describe('add',()=>{
it('should return 5 when 2+3',()=>{
expect(add(2,3),5)
})
it('should return -1 when 2-3',()=>{
expect(add(2,-3),-1)
})
}) describe('mul',()=>{
it('should return 6 when 2*3',()=>{
expect(mul(2,3),6)
})
})
})

Step3:在package.json里面添加

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

Step4:运行npm test

Node6-1单元测试mocha的更多相关文章

  1. 前后端通吃的单元测试---mocha

    git clone https://github.com/shenggen1987/mocha-demo.git npm install front 前台测试代码 backend 后台测试代码 先安装 ...

  2. Vue 单元测试 使用mocha+jest

    目录 Vue 单元测试 mocha+jest jest 实例 mocha expect方法断言 示例代码 Vue 单元测试 官网:https://vue-test-utils.vuejs.org/zh ...

  3. 项目vue2.0仿外卖APP(二)

    vue-cli开启vue.js项目 github地址:https://github.com/vuejs/vue-cli Vue.js开发利器vue-cli,是vue的脚手架工具. 在工地上,脚手架是工 ...

  4. Node.js 学习资源

    这篇文章编译整理自Stack Overflow的一个如何开始学习Node.js的Wiki帖,这份资源列表在SO上面浏览接近60万次,数千个收藏和顶.特意整理发布到这里,其中添加了部分中文参考资料. 学 ...

  5. NodeJS常用模块介绍

    收集了NodeJS开发中常用的一些模块. MVC框架 - Express Express 是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站.Express框架建立在Nodejs内置的Ht ...

  6. 架构选型之Nodejs与Java

    前言: 身边越来越多的同事谈论Nodejs,谈其异步IO.事件回调.前后台统一一门语言,创业的朋友的第一个创业项目也选择了Nodejs,期望能够使用一种语言节省成本快速完成需求开发.与其他项目组的同事 ...

  7. Node.js目录

    [相关学习] npm入门教程 [基础] (1) 初识Node.js (2) 开发环境和调试工具 (3) commonJs 规范 (4) node 概念(global.process进程.调试) (5) ...

  8. vs code 插件收集

    名称 简述 Auto Close Tag 自动闭合HTML标签 Auto Import Typescript自动import提示 Auto Rename Tag 修改HTML标签时,自动修改匹配的标签 ...

  9. vue cli4.0 快速搭建项目详解

    搭建项目之前,请确认好你自己已经安装过node, npm, vue cli.没安装的可以参考下面的链接安装. 如何安装node? 安装好node默认已经安装好npm了,所以不用单独安装了. 如何安装v ...

随机推荐

  1. k8s 获取 Pod ip 添加到环境变量

    0x00 事件 有一个需要将 Pod 自身的 ip 地址添加到环境变量的需求,可以在 yaml 文件的 env 中这样设置: env: - name: POD_OWN_IP_ADDRESS value ...

  2. DPT-RP1 解锁过程整理

    前言 首先,感谢大神HappyZ ,没有他的教程,没有下文了. 其次,要感谢的是润物 ,没有她的教程, 可能要研究好久才能弄明白大神给的工具怎么用. 本人没接触过python,以为在命令行执行Pyth ...

  3. Servlet+Ajax实现搜索框智能提示

    简介:搜索框相信大家都不陌生,几乎每天都会在各类网站进行着搜索.有没有注意到,很多的搜索功能,当输入内容时,下面会出现提示.这类提示就叫做搜索框的智能提示,本门课程就为大家介绍如何使用Servlet和 ...

  4. 基于 HTML5 + WebGL 的宇宙 3D 展示系统

    前言 近年来随着引力波的发现.黑洞照片的拍摄.火星上存在水的证据发现等科学上的突破,以及文学影视作品中诸如<三体>.<流浪地球>.<星际穿越>等的传播普及,宇宙空间 ...

  5. 【Android - 进阶】之Animation补间动画

    补间动画也叫View动画,它只能针对View进行动画操作,且补间动画操作的只是View中可见的部分,即只操作界面,对于可点击区域等都不会进行操作. 在Android中,补间动画的顶级类是Animati ...

  6. JS使用readAsDataURL读取图像文件

    JS使用readAsDataURL读取图像文件 FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项特殊的技术,可以将资料(例如图片 ...

  7. Process用法与进程详解

    僵尸与孤儿进程 僵尸进程:父进程的子进程结束的时候父进程没有wait()情况下子进程会变成僵尸进程 孤儿进程(无害) 一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿 ...

  8. spring源码学习五 - xml格式配置,如何解析

    spring在注入bean的时候,可以通过bean.xml来配置,在xml文件中配置bean的属性,然后spring在refresh的时候,会去解析xml配置文件,这篇笔记,主要来记录.xml配置文件 ...

  9. num += num 与 num = num+ num

    a = 100def test(num): num += num print(num) test(a)print(a) 200100 这里 num += num 与 num = num+ num 不能 ...

  10. 基于webpack实现多html页面开发框架五 开发环境配置 babel配置

    一.解决什么问题      1.开发环境js.css不压缩,可在浏览器选中代码调试      2.开发环境运行http服务指向打包后的文件夹      3.babel输出浏览器兼容的js代码 二.需要 ...