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. vue3.0里的生命周期函数

  2. Clean Code 笔记 之 第四章 如何应用注释

    继上一篇笔记之后,今天我们讨论一下 代码中是存在注释是否是一件好的事情. 在我们开发的过程中讲究“名副其实,见名识意”,这也往往是很多公司的要求,但是有了这些要求是不是我们的代码中如果存在注释是不是意 ...

  3. SpringBoot学习(七)—— springboot快速整合Redis

    目录 Redis缓存 简介 引入redis缓存 代码实战 Redis缓存 @ 简介 redis是一个高性能的key-value数据库 优势 性能强,适合高度的读写操作(读的速度是110000次/s,写 ...

  4. 简单地认识一下 HTML

    简单复盘一下 HTML. 1.HTML 什么是 HTML?HTML 是 Hyper Text Markup Language 的简写,译成中文是「超文本标记语言」. 顾名思义,超文本,就是不止于文本, ...

  5. mysql 安装报错集合

    mysql-5.6.39 源码编译安装报错 报错信息: /tmp/ccV858jD.s: Assembler messages: /tmp/ccV858jD.s: Fatal error: can't ...

  6. C语音I博客作业09

    ------------恢复内容开始------------ 这个作业属于那个课程|C语言程序设计II --|:--:|--: 这个作业要求在哪里|https://edu.cnblogs.com/ca ...

  7. Mac系统安装文件提示文件已损坏,打不开解决办法

    Mac系统安装文件提示文件已损坏,打不开解决办法: 修改系统配置:系统偏好设置 - 安全性与隐私 - 任何来源”.如果没有“任何来源”这个选项,是因为你的系统是macOS Sierra 10.12,苹 ...

  8. 最小生成树——Kruskal与Prim算法

    最小生成树——Kruskal与Prim算法 序: 首先: 啥是最小生成树??? 咳咳... 如图: 在一个有n个点的无向连通图中,选取n-1条边使得这个图变成一棵树.这就叫“生成树”.(如下图) 每个 ...

  9. Android手机打造你的Python&Java开发工具!

    开发者桌面 之前写过一篇文章:将Android手机打造成你的python开发者桌面 在安卓手机上通过Termux软件,创建一个模拟Linux系统,它的好处就是无需root,即可在手机中编写Python ...

  10. AUTH_USER_MODEL 添加报错(粗心)

    HINT: Add or change a related_name argument to the definition for 'UserProfile.user_permissions' or ...