使用mocha与should库做nodejs单元测试

    nodejs是服务端开发,他也可以做单元测试,只不过,这个单元测试一般是针对某一个文件或者一个模块而言,我们经常看到github上的很多项目各自的文件夹中都有很多xxx.test.js这样的文件,通常这就是对应该文件夹下的一个xxx.js模块而言的单元测试。nodejs单元测试有mocha这个库,他提供describe,it等语法来做测试。另外,nodejs本身的assert库提供断言功能,也可以借助should库做断言,还有chai依赖库也可以做断言。

    一、创建nodejs项目,并加入依赖

mkdir mochatest
cd mochatest
npm init -y
npm install mocha should -D

    修改一下scripts脚本中的test命令:

{
  "name": "mochatest",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "mocha test.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "mocha": "^7.0.0",
    "should": "^13.2.3"
  }
}

    二、编写一个模块app.js

const add = (a,b)=>a+b
const sub = (a,b)=>a-b
const reducer = (a)=>a.reduce((x,y)=>x+y,0)
module.exports = {add,sub,reducer}

    三、编写测试代码

require("should")
var app = require("./app")
var assert = require("assert")
describe("mocha unit test",function(){
    it("1+2=3",function(){
        app.add(1,2).should.equal(3)
    })

    it("8-5=3",function(){
        app.sub(8,5).should.equal(3)
    })

    it("[1 2 3 4 5].reduce()=15",function(){
        app.reducer([1,2,3,4,5]).should.equal(15)
    })

    it("assert.equal(5,add(2,3))",function(){
        assert.equal(5,app.add(2,3))
    })
    
})

    四、运行测试 npm run test

   

    示例中,前面三个用例我们使用should做断言,最后一个示例,借助了nodejs自身的assert做断言,这个自带的断言和java中自带的单元测试断言类似,用法也很简单,熟悉java开发的话,应该比较好理解。assert断言很直观,一般做equal判断的话,传入一个actual值,一个expected值,两者如果相等,用例测试通过显示pass。

    nodejs单元测试远不止这些内容,还有setTimeout延时,async异步,http网络请求等等的测试,都有相关的测试技巧,只有单元测试做的足够好,我们才会开发出更加的健壮和稳定的代码。后续的集成测试也会少一些错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值