前言

  • 以前就听说单元测试什么的,没怎么重视,既然这玩意那么多人吹,肯定有好处,再研究看看。

官网

  • chai官网文档
  • mocha文档。
  • chai-http文档
  • nyc文档

安装

  • 用js的不用装@types。
cnpm  i mocha @types/mocha chai @types/chai chai-http nyc  -D

package.json配置

  • 如果直接执行test配命令mocha,就默认找test文件下的内容,如果需要配置路径:
 "test":"mocha -r  src/test/*.spec.ts --exit",
  • 但是这样不支持typescript,所以还需要加上ts-node/register,这个在mocha官方文档有写。
"test":"mocha -r ts-node/register  src/test/*.spec.ts --exit",
  • - r是支持es6导入模式。
  • 默认mocha是执行第一层目录内容,如果需要递归查找,需要加–recursive,要指定顺序,需要–file:
"mocha  --recursive --require ts-node/register --file test/helper.spec.ts 'test/**/*.spec.ts' --exit",
  • nyc的配置是这样:
"coverage":"nyc --reporter lcov npm run test"
  • 可以发现mocha和nyc都像脚本一样按顺序走一遍。

编写测试用例

  • 首先测试用例一般有个全局配置:
import chai from 'chai'
import chaiHttp from 'chai-http'
chai.use(chaiHttp)
before(async()=>{//会在所有单元测试前执行
})
beforeEach(async()=>{//在每个单元测试前执行
})
afterEach(async ()=>{//每个单元测试之后执行
})
after(async ()=>{//在所有单元测试后执行
})
  • 这里面的函数就有点像生命周期一样。一般是把清库同步库之类的全局操作初始操作写进去。关于这些hook,mocha文档例子比较详细。
  • 下面这个例子是测试添加用户接口的:
import app from '../index'
import chai ,{expect} from 'chai'
describe('测试用户模块',()=>{it('添加用户接口',async ()=>{let result = await chai.request(app).post('/user/register').set('Content-Type','application/json').send({username:'444444',password:'444444',confirm:'44444',email:'444444@qq.com'})expect(result).to.have.status(200)expect(result.body).to.have.property('success')expect(result.body).to.have.property('data')expect(result.body.success).to.equal(true)})
})
  • chai.request是借助了chai的插件chai-http。其他到底基本上看名字就懂了。具体还要别的需求就看chai官网文档。

代码覆盖率

  • 这个就是nyc的用处了,前面package.json配置了nyc后运行它,(首先必须保证测试用例全部通过,否则没用。)然后会生成个文件夹叫coverage。
  • 里面有个lcov-report文件夹,有个index.html。打开它,即可看见报告。
  • 还是很好玩的。

【nodejs】mocha+chai+nyc基础相关推荐

  1. vue-cli自动化测试karma + mocha + chai

    最近再为团队团队选择可行的测试方案.前端目前是vue-cli技术栈.试着在vue项目添加测试.把测试完整的方案记录下来. vue官网给的例子用的是karma + mocha + chai. karma ...

  2. [Js_Testing]3分钟学会Mocha+Chai单元测试

    目录 什么是单元测试 什么是mocha 常见断言库 什么是chai 介绍 用法: 使用 安装环境 测试框架写法 mocha的使用 本节代码 参考目录 什么是单元测试 单元测试是用来对一个模块.一个函数 ...

  3. 大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试

    一. 前端自动化测试 大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了"人肉测试机",完全没必要自己来.但随着项目体量的增大,许多 ...

  4. 使用karma+mocha+chai为vue组件库做单元测试

    前言 单元测试,这一环节对我们的应用的重要性不言而喻,它能很大程度确保我们项目运行的健壮性.因此,前一段时间,笔者公司要求现有的vue搭建的npm组件库做单元测试.之前,笔者对单元测试做过了解,一直想 ...

  5. 前端Mocha+Chai单元测试

    一. 单元测试 单元测试分为两种: TDD:Test-Driven Development,测试驱动开发,注重输出结果. BDD:Behavior Driven Development,行为驱动开发, ...

  6. electron的单元测试(基于mocha+chai+karma)

    1. 最近有个接手在已有的(electron-vue)的项目中做单元测试,但是基于vue-electron脚手架搭建的项目的electron是2.0.4版本,而最新的electron已经升级到11版本 ...

  7. [Puppeteer]Puppeteer+Mocha+Chai实现端到端测试

    目录 项目 puppeteer实现自动化 知识点补充 Mocha+Chai实现测试 优化代码 本节代码 相关链接 项目 将单元测试框架mocha,断言chai和puppeteer结合起来做端到端测试: ...

  8. 带你入门nodejs第一天——node基础语法及使用

    带你入门nodejs第一天--node基础语法及使用 带你入门nodejs第二天--http 模块化 npm yarm 带你入门nodejs第三天-express路由 带你学习nodejs第四天--身 ...

  9. 前端单元测试-karma+mocha+chai

    一.概念普及 1.单元测试运行环境: 运行环境是集成一系列功能的工具,我们可以通过它来选择"测试框架".自动打开浏览器.查看测试结果等功能.我们可以把它近似的理解为vue的vue- ...

最新文章

  1. 用Python解“爬动的蠕虫”题
  2. According to TLD or attribute directive in tag file, attribute value does not accept any expressions
  3. tensorflow中tf.random_normal和tf.truncated_normal的区别
  4. C语言学习之通过指针变量输出整型数组a的10个元素
  5. java jdk API中英文下载
  6. BURP 测试出 OPTIONS PUT DELETE TRACE 方法
  7. object-c 运行时显示view没有设置outlet的错误
  8. css3组件实战--绚丽效果篇
  9. shell_study
  10. Git 笔记——如何处理分支合并冲突
  11. 算法:Gray Code 格雷码
  12. 工作流引擎厂商有哪些_国内主要工作流厂商分析
  13. 反射之动态拼接sql字符串
  14. 打印word模板并预览打印
  15. Kickoff(上路了)
  16. python test suite什么意思_如何:在python中设置testsuite
  17. linux 终止作业任务命令,Linux中作业控制命令
  18. scala 环境搭建 变量 值 数据类型 元组 表达式块 语句 函数 柯里化 集合 面向对象 隐式转换
  19. Super Unicode Editor(十六进制编辑器)v3.01中文版
  20. 电脑键盘部分按键失灵_电脑键盘失灵解决方法 电脑键盘部分失灵解决方法

热门文章

  1. auto uninstaller 9.3.28下载安装教程
  2. 内存溢出问题核查与定位
  3. 好人品的八个标准,你有几个?
  4. 如何理解CRM软件里的销售机会与线索
  5. awk】1-awk基础篇(又名UNIX.Shell.awk)
  6. python 协程可以嵌套协程吗_Python | 详解Python中的协程,为什么说它的底层是生成器?...
  7. java 加密word_Java 加密和解密PDF文档
  8. 一款实用免费的日志自动化分析工具
  9. Windows fatal exception: access violation / Process finished with exit code -1073741819 (0xC0000005)
  10. Java异常处理流程