前言

单元测试,这一环节对我们的应用的重要性不言而喻,它能很大程度确保我们项目运行的健壮性。因此,前一段时间,笔者公司要求现有的vue搭建的npm组件库做单元测试。之前,笔者对单元测试做过了解,一直想做,正好借此机会向老大要了这个任务过来。下面就是笔者此次单元测试的分享。

单元测试

单元测试就是对一段代码做隔离测试。这一段代码的选择,不是固定的,而是自己去把握。

测试框架选择

如何去选择呢?

笔者认为,可以从三个方面去衡量一个框架(或者说一个测试相关的技术栈)值不值得应用。

  • 运行环境的限制(一般为node环境和浏览器环境)
  • 运行性能的高低
  • 测试报告生成

以上三个点不一定正确,纯属笔者个人观点。

框架选择

市面上有很多成熟的测试框架,比如JestMocha等。但我们对框架的选择一定要契合我们自己的项目需求。
笔者的项目是vue搭建的npm组件库,vue官方文档对vue相关的测试也是有介绍的。因此,就去了解了一番。
综合对比了下后,笔者选择了Running Vue Test Utils with Karma

karma测试搭建

安装
npm install --save-dev @vue/test-utils karma karma-chrome-launcher karma-mocha karma-sourcemap-loader karma-spec-reporter karma-webpack mocha
karma.conf.js文件配置

首先,karma的默认配置文件是karma.conf.js。当运行时,可直接执行脚本命令karma start。如果是自己另起的文件名,比如my.conf.js,则应该 karma start my.conf.js
下面直接给出笔者的文件配置,重点地方加以说明:

// karma.conf.js
const webpackConfig = require('./build/webpack.test');module.exports = function(config) {const configuration = {frameworks: ['mocha', 'chai', 'webpack'], // 此处的配置,将框架全局变量声明为全局files: ['test/**/*.spec.js'],preprocessors: { // 预处理器'test/**/*.spec.js': ['webpack', 'sourcemap'] // webpack预编译处理;sourcemap映射到源码},webpack: webpackConfig,reporters: ['spec'],browsers: ['ChromeHeadless'] // 填入本地存在的正确的浏览器名称,karma会自动打开。};config.set(configuration);
};
  • frameworks:该字段所需的框架,是需要通过npm下载安装的。放置测试框架名,断言库名,webpack等。
  • files:填入你需要测试的文件。
  • preprocessors:预处理器。可配置源码的编译,及映射等功能。
  • webpack:配置测试所需的webpack编译功能。

注:光有测试框架还不行,我们还需要安装断言库,这里我们选择chai。所谓断言,就是判断源码的执行结果和预期是否一致。

配置运行karma脚本命令

这里笔者配置了两种命令,放在package.json中:

"test": "karma start karma.conf.js --single-run",
"test:watch": "karma start karma.conf.js"

第一个命令:一次性运行所有测试文件就结束了。
第二个命令:运行测试文件,并监听文件是否改动,改动了则运行。跟webpack的watch类似。

遇到的问题

1.断言库chai的expect变量,如何在全局文件中使用呢?


解决方案:

2.如何监听测试文件


注意:–single-run和watch这两个命令选项的功能是相斥的,二者只能有一个。

3.测试文件出错,如何找到源码行数?

安装npm install karma-sourcemap-loader --save-dev,配置文件中如下配置:

注意:切忌在webpack配置中打开devtool选项,否则,无法映射到源码。

4.describe函数来自mocha框架,我在配置文件中的frameworks字段写入了mocha,但eslint报undefined。

在eslint配置文件中,在env字段中加入mocha: true

5.expect函数来自chai框架,我在配置文件中的frameworks字段写入了chai,但eslint报undefined。

这时候我们是在eslint配置文件中加入如下字段:

 globals: {expect: true}

总结

好了,以上就是笔者给现有npm组件库做单元测试的经历。如有问题,欢迎大家指正~~~

使用karma+mocha+chai为vue组件库做单元测试相关推荐

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

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

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

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

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

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

  4. 使用vue加svg实现流程图代码_京东风格的移动端Vue组件库NutUI2.0来啦

    移动端 Vue 组件库 NutUI 自发布以来受到了广泛的关注.据不完全统计,目前至少有30多个京东的 web 项目正在使用 NutUI . 经过一段时间紧锣密鼓的开发,近期,京东正式发布了 NutU ...

  5. 京东Vue组件库NutUI 2.0发布:将支持跨平台!

    NutUI 是一套来自京东用户体验设计部(JDC)前端开发部的移动端 Vue 组件库,NutUI 1.0 版本于 2018 年发布.据不完全统计,目前在京东至少有30多个 web 项目正在使用 Nut ...

  6. 不厌其烦,又一个Vue组件库

    Github仓库地址: github.com/ms-design/m- 文档和Demo网站: ms-design.github.io MS Design 基于微软 Fluent Design 设计的 ...

  7. vue 组件库发布_如何创建和发布Vue组件库

    vue 组件库发布 Component libraries are all the rage these days. They make it easy to maintain a consisten ...

  8. Vant 1.0 发布:轻量、可靠的移动端 Vue 组件库

    Vant 是有赞前端团队维护的移动端 Vue 组件库,提供了一整套 UI 基础组件和业务组件.通过 Vant 可以快速搭建出风格统一的页面,提升开发效率. Vant 一.关于 1.0 距离 Vant ...

  9. Antd Vue 组件库之Table表单

    Antd Vue 组件库之Table表单 Table 表格 展示行列数据. 何时使用 当有大量结构化的数据需要展现时: 当需要对数据进行排序.搜索.分页.自定义操作等复杂行为时. 如何使用 指定表格的 ...

最新文章

  1. 暑期大作战 第五天(第四天待补)
  2. mapreduce原理
  3. CSS深入理解学习笔记之vertical-align
  4. SqlSession接口和Executor
  5. 【ABAP系列】SAP ABAP的事件执行顺序
  6. mysql 部署最佳实践_MySQL安装脚本最佳实践
  7. C语言32个关键字详解
  8. 使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群 1
  9. 专升本C语言知识点笔记
  10. 删除文件夹需要管理员权限的解决方法
  11. 分块矩阵求逆(推导)
  12. 对视图有时为什么使用select top 100 percent * 而不使用 select * 呢?
  13. 剪辑视频怎么加音效 视频音效常用都有哪些类型
  14. 小甲鱼零基础入门学习Python(绝对干货,值得学习)
  15. linux添加防护墙规则rc.local,Linux环境下iptables防火墙基本用法演示
  16. 双线性 双三次 和基于lanczos 的插值算法
  17. 多柱汉诺塔问题Hanoi 动态规划求解方案数
  18. 不可以色色,色狗柴柴系列表情包,好有趣
  19. 中国书法对世界哲学美学艺术学的意义
  20. 威联通ts 532x 篇七 修改shell 命令行 为 zsh + oh-my-zsh

热门文章

  1. 20189200余超 2018-2019-2 移动平台应用开发实践第十周作业
  2. setAttribute的具体用法
  3. 大连东软信息学院计算机怎么样,大连东软信息学院到底怎么样
  4. oracle 删除后恢复,Oracle快速恢复误删数据的方法
  5. 结合电压采样电路介绍RC滤波电路
  6. 非财务人员的财务培训教(一.二)------财务基础知识
  7. vscode remote-ssh连接ubuntu子系统提示错误:WSL: VSCode server install fails on Ubuntu 19.10
  8. oracle表空间怎么改名字,修改oracle数据文件和表空间名字
  9. 国税报表html,电子税务局财务报表申报操作指南及常见问题解答税务局财务报表.pdf...
  10. 其他网页可以使用,但百度首页打不开,百度搜索无法使用,怎么办