karma测试html,常用的前端自动化测试工具介绍 —— Karma(二)
上篇文章中,对 Karma 进行了简单的介绍,本文是上篇文章的一些延伸,主要是 Karma 和 ES6 相关的配置以及代码覆盖率的配置。
首先来让 Karma 实现 ES6 支持。
ES6 支持
默认情况下,Karma 是不支持 ES6 的,比如我们有这样一个 utils.js 文件:
function add(x){
return(y)=>{
return x + y
}
}
export {
add
}
该文件中使用 ES6 的export 关键字向外暴露了一个 add 函数。然后在 src 文件夹中再创建一个 main.js 文件,并使用 import 关键字导入模块:
import {
add,
} from "./utils.js";
...
在不进行其他配置之前,我们来运行 karma start 命令:
PS E:\charley-praise> karma start
05 11 2017 17:03:10.128:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
05 11 2017 17:03:10.135:INFO [launcher]: Launching browser PhantomJS with unlimited concurrency
05 11 2017 17:03:10.146:INFO [launcher]: Starting browser PhantomJS
05 11 2017 17:03:13.416:INFO [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Connected on socket gfnyTuv0Hz4bH7JBAAAA with id 98139962
PhantomJS 2.1.1 (Windows 8 0.0.0) ERROR
SyntaxError: Use of reserved word 'import'
at src/main.js:1
PhantomJS 2.1.1 (Windows 8 0.0.0) ERROR
SyntaxError: Unexpected token '>'
at src/utils.js:17
这里就报错了,因为我们使用了浏览器和 Node 都不支持的 ES6 Modules。为了让 Karma 支持 ES6 Modules,我们需要使用 Webpack 和 Babel。下面有请这两位选手:
// 安装 webpack 相关的套件
yarn add webpack karma-webpack -D
// 安装 babel 相关的套件
yarn add babel-core babel-loader babel-preset-env -D
安装完成后,修改 karma.conf.js 配置文件:
1)增加 webpack 配置:
...
webpack:{
module: {
rules: [
{
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
presets: ['env'],
}
},
exclude: /node_modules/
}]
}
},
...
2)修改配置项中的 preprocessors,应用我们的 webpack 插件:
...
preprocessors: {
'./src/**/*.js':['webpack'],
'./test/**/*.spec.js':['webpack']
},
...
因为我们的原始文件和测试文件都使用了 ES6,因此需要对它们都应用 webpack 的配置。
现在运行 karma start 命令,就不会发生错误了。
代码覆盖率支持
接下来,让 Karma 实现代码覆盖率的支持,让我们隆重请出 Istanbul 大佬:
yarn add istanbul-instrumenter-loader -D
yarn add babel-plugin-istanbul -D
yarn add karma-coverage-istanbul-reporter -D
安装完成后,我们需要做以下配置:
1)修改 karma.conf.js 配置文件中的 webpack 配置项:
...
webpack:{
module: {
rules: [{
test: /\.js$/,
use: {
loader: 'istanbul-instrumenter-loader',
options: { esModules: true }
},
enforce: 'pre',
exclude: /node_modules|\.spec\.js$/,
},
{
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
presets: ['env'],
plugins: ['istanbul']
}
},
exclude: /node_modules/
}]
}
},
...
2)修改 karma.conf.js 中的 reporters 选项:
...
reporters: ['coverage-istanbul'],
...
3)对覆盖率测试做一些配置
...
coverageIstanbulReporter: {
reports: ['html', 'text-summary'],
dir: 'coverage/',
fixWebpackSourcePaths: true,
skipFilesWithNoCoverage: true,
'report-config': {
html: {
subdir: 'html'
}
}
},
...
现在可以来测试一下单元测试覆盖率的情况了,我们不加入任何单元测试代码,看下运行效果:
05 11 2017 17:04:22.020:INFO [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Connected on socket 6UUDaNimVpEfxhKDAAAA with id 72046933
=============================== Coverage summary ===============================
Statements : 0% ( 0/2 )
Branches : 100% ( 0/0 )
Functions : 0% ( 0/2 )
Lines : 0% ( 0/2 )
================================================================================
对于代码覆盖率的测试,会从语句(Statements)、分支(Branches)、函数(Functions)和行(Lines)四个维度进行。对于这几个维度的解释如下:
行覆盖率(line coverage):是否每一行都执行了?
函数覆盖率(function coverage):是否每个函数都调用了?
分支覆盖率(branch coverage):是否每个if代码块都执行了?
语句覆盖率(statement coverage):是否每个语句都执行了?
接下来,对 utils.js 中的 add 进行单元测试,下面是 utils.spec.js 中的代码:
import { add } from "../src/utils"
describe("测试算数运算",()=>{
it("测试加法运算",()=>{
const add5 = add(5)
expect(add5(5)).toBe(10)
})
})
然后执行 karma start 命令,看下运行效果:
05 11 2017 17:11:09.487:INFO [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Connected on socket WKhEFarUgA8QPn2HAAAA with id 38737854
=============================== Coverage summary ===============================
Statements : 100% ( 2/2 )
Branches : 100% ( 0/0 )
Functions : 100% ( 2/2 )
Lines : 100% ( 2/2 )
================================================================================
恩,不错,现在我们的代码覆盖率为 100%,看来升值加薪,是在所难免了。
查看 HTML 报表
除了可以在命令行的运行结果中查看代码覆盖率的情况,Karma 还为我们生成了 HTML 报表(上面在配置 coverageIstanbulReporter 对生成路径进行了配置),看起来更加直观。您可以自行打开 coverage (或其他您自行配置的路径)进行查看,这里就不截图了。
总结
本文主要在前文的基础上,为 Karma 增加了 ES6 和代码覆盖率的支持,让 Karma 支持 ES6 需要用到 Webpack 和 Babel 的一些套件, 对于代码覆盖率的支持,我选用了 Istanbul 的系列套件。
关于具体的代码,我在下篇文章中专门进行陈列。
完。
karma测试html,常用的前端自动化测试工具介绍 —— Karma(二)相关推荐
- 常用的前端自动化测试工具介绍 —— Karma
在开发的过程中,除了代码本身,测试也是重要的一环.大体来说,测试分为以下几种类型: 单元测试 功能测试 性能测试 安全测试 对于普通开发者而言,单元测试和功能测试是最常见的两种测试方式,本系列文章要介 ...
- 前端自动化测试工具:SlimerJS、phantomJS 和 CasperJS
对于富客户端的 Web 应用页面,自动登录.页面修改.抓取页面内容.屏幕截图.页面功能测试-面对这些需求,使用后端语言需要花费不少的精力才能实现.此时 SlimerJS.phantomJS 或 Cas ...
- 4.前端开发工具介绍以及下载使用
支持戳这里看视频学习 →→→ [上]前端开发工具介绍与下载...[下]写人生中第一个HTML 戳这里可看全系列内容 →→→ 戳我戳我戳我 文章目录 一.前言 二.编辑器介绍 1.VSCode a.介绍 ...
- python自动测试p-python网络爬虫之自动化测试工具selenium[二]
@ 前言 hello,大家好,在上章的内容里我们已经可以爬取到了整个网页下来,当然也仅仅就是一个网页. 因为里面还有很多很多的标签啊之类我们所不需要的东西. 额,先暂且说下本章内容,如果是没有丝毫编程 ...
- autorunner测试java代码,AutoRunner自动化测试工具介绍
AutoRunner简介 AutoRunner是黑盒测试工具,可以用来完成功能测试.回归测试.每日构建测试与自动回归测试等工作.是具有脚本语言的.提供针对脚本完善的跟踪和调试功能的.支持IE测试和Wi ...
- android 打开系统相册_这5款常用Android手机自动化测试工具你要收藏
1.Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出.实际上该工 ...
- 常用的WEB自动化测试工具
主流自动化测试工具–QTP QTP是一个侧重于功能的回归自动化测试工具;提供了很多插件. QTP支持的脚本语言是VBScript,这对于测试人员来说,感觉要"舒服"得多.VBScr ...
- 【1个月快速学习自动化测试】接口自动化测试(4) —— 接口自动化测试工具介绍
接口测试的全称是应用程序编程接口(API)测试,从原理上来说,接口测试是模拟客户端向服务器端发送请求,然后检查能否获得正确的返回信息.接口测试用于测试RESTful API.SOAP Web服务,这些 ...
- 前端build工具介绍
即使对于一些经验丰富的开发者来说,诸多的前端工具还是会让他们感到头痛.解决这个问题的最好办法,就是在概念上理解他们的工作方式,已经他们之间相互配合的方式. 不要被各种专业名词唬住 Node, NPM, ...
最新文章
- java性能保障技术_狙击P7!阿里大佬亲授“Java性能调优技术宝典”,太完整了!...
- java内存规范_Java内存模型-jsr133规范介绍
- 图解classloader加载class的流程及自定义ClassLoader
- adonis.js mysql_Adonis.js——数据库基本操作
- mmap和munmap对文件进行操作(读写等)
- java计算集合对称差
- 用得最多的altium版本_83版《神雕》有多猛?收视率破90%!金庸最满意的版本...
- 新年寄语 | 2018 以及 Oracle 18c 一个时代的开启
- python写一个表白程序_用Python个女神做一个表白神器
- 《深入理解Java虚拟机》第6章 类文件结构
- GoCart 分类和产品 测试二
- 计算机体系结构在线读,计算机体系结构new.ppt
- 【AAAI 2020】微软亚洲研究院6篇精选论文在家必看!
- HDOJ 2015 偶数求和
- 前端神器-网站图片抓取精灵V1.0正式发布
- ,PLCSIM、SIMIT、Amesim、NX MCD、 Process Simulate、Plant Simulation,一文带你了解西门子整个虚拟调试与仿真软硬件体系
- Android 编写测试用例
- mysql简述cs结构与bs结构的区别_什么是BS和CS结构?
- amr java 播放_Java ME中.amr文件的语音或音频播放器
- 超级好用的 excel 导入导出框架:excel-import-export
热门文章
- 我要喷一个自认为很垃圾的网站架构 - 老赵【苏州】
- weka mysql 汉字_Weka访问MySQL数据库
- Spark RDD 论文详解(二)RDDs
- 格局是什么意思「简单易懂」
- FFmpeg —— 编译obs源码(解决编译后不能捕获摄像头问题)
- python如何比较大小_python列表如何比较大小
- 三、应广单片机 I/O 设定
- this kernel requires an x86-64 CPU, but only detected an i686 CPU. unable to boot - please ues a ke
- ARM简介及Cortex-A9
- 提前还贷 别忘退税退保