博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react项目中使用mocha结合chai断言库进行单元测试
阅读量:6873 次
发布时间:2019-06-26

本文共 1862 字,大约阅读时间需要 6 分钟。

react项目中使用mocha结合chai断言库进行单元测试

git地址:

如果对你有所帮助,感谢start

项目搭建

create-react-app react-mocha-test 创建一个名称为 react-mocha-test 的react项目

进入 react-mocha-test 安装 Mocha 为了操作的方便,请在全面环境也安装一下Mocha

npm install -g mocha

编写测试脚本

1.进入src目录,新建tool.js文件存放我们的需要测试的函数,函数的具体作用这里就不需要解释了。

function checkSex (idcard) {  if (idcard === undefined || idcard === null) {    return '男'  }  if (parseInt(idcard.substr(16, 1)%2, 10) === 1) {    return '男'  } else {    return '女'  }}function add(x, y) {  return x + y}function getParameterByName(name, url) {   if (!url) url = window.location.href;   /*eslint no-useless-escape: */   name = name.replace(/[\[\]]/g, "\\$&");   var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),       results = regex.exec(url);   if (!results) return null;   if (!results[2]) return '';   return decodeURIComponent(results[2].replace(/\+/g, " "));}module.exports = {  checkSex,  add,  getParameterByName}

2.在根目录中 test 中建立测试脚本文件,列如: index.js

在文件中引入我们要测试的函数

let {checkSex, add, getParameterByName} = require('../src/tool/tool.js')

我们还用到了chai断言库,详情请了解

所谓"断言",就是判断源码的实际执行结果与预期结果是否一致,如果不一致就抛出一个错误。

使用npm install chai安装

通过let expect = require('chai').expect 引入

接下来我们就开始写断言测试,这里只写一种

测试第一个函数checkSex

describe('根据身份证号码验证用户性别', function() {  it('110101199003072615 男', function() {    expect(checkSex('110101199003072615')).to.be.equal('男')  })  it('110101199003072156 男', function() {    expect(checkSex('110101199003072156')).to.be.equal('男')  })  it('15010219900307442X 女', function() {    expect(checkSex('15010219900307442X')).to.be.equal('女')  })  it('150102199003075385 女', function() {    expect(checkSex('150102199003075385')).to.be.equal('女')  })})

这里举例四种测试用例,根据身份证号码辨别该用户的性别和我们预期的是否一致。

基本上,expect断言的写法都是一样的。头部是expect方法,尾部是断言方法,比如equala/anokmatch等。两者之间使用toto.be连接。

如果expect断言不成立,就会抛出一个错误。事实上,只要不抛出错误,测试用例就算通过。

在项目根目录执行npm test进行单元测试,可以看到测试结果

测试通过

测试异常

转载地址:http://islfl.baihongyu.com/

你可能感兴趣的文章
U盘安装Centos后拔除U盘无法启动问题解决方法
查看>>
在C#代码中应用Log4Net(五)将Log4Net正确地封装在自己的类库中并进行调用
查看>>
SACC 2018之人工智能篇:AI在不同企业场景下的应用和探索
查看>>
从“3Q大战”到腾讯致歉——杀毒软件市场的“相爱相杀”
查看>>
20年难有进步 DRAM延迟问题终于得到优化!
查看>>
数字化整合服务成主流:2017复合机市场盘点
查看>>
360金融更新招股书:前三季营收13.8亿 最快月底上市
查看>>
中国公布北京2022年冬奥会企业赞助有关增值税政策
查看>>
四川公安严厉打击盗油犯罪:2018年缴获被盗柴油逾27吨
查看>>
创新智慧矿山解决方案 广纳集团走绿色可持续发展之路
查看>>
中消协警示:有人打“保健品岁末答谢”等幌子行骗
查看>>
品牌不能忽视的数字资产——域名为何在今天依然重要?
查看>>
贴福字、集五福、沾福气!这才是“中国福“的最优雅打开姿势
查看>>
DT时代,大数据常用的软件工具有哪些?
查看>>
十一个关于Netty的经典问答:为何选择Netty?
查看>>
深入浅出 FlatBuffers 之 Schema
查看>>
JavaScript 设计模式 : 生活中的'适配器'和'装饰者'模式
查看>>
Retrofit与Rxjava封装终结者(一)基本用法
查看>>
Weex 在饿了么前端的实践
查看>>
Element源码分析系列3-Button(按钮)
查看>>