karma:提供浏览器测试环境,在此karma提供测试服务。
mocha:提供Javascript测试环境,在此做为karma测试框架,被引入karma中使用。
chai:断言库。html
安装karma:npm install karma -D
全局安装karma脚手架,便于使用karma命令:npm install karma-cli -g
进入测试文件夹:cd **
生成karma配置文件:karma init karma.conf.js(配置文件名)
![]()
安装依赖包:npm install mocha karma-mocha chai karma-chai karma-chrome-launcher -D
说明:karma-mocha、karma-chai、karma-chrome-launcher为将框架引入karma的中间件,在配置文件plugins中配置
// karma.conf.js文件: frameworks: ['mocha',"chai"], plugins: [ "karma-mocha", "karma-chrome-launcher", "karma-chai" ]
因为测试文件中没有文件模块化,因此引入webpack。
安装webpack依赖包:npm install webpack webpack-merge karma-webpack -D
安装babel-loader依赖包:npm install babel-loader babel-core babel-preset-2015 -D
plugins: [ // ... "karma-webpack" ], preprocessors:{ '待预处理文件':['webpack'] }, webpack:{ // webpack相关配置,无entry与output配置项 }
因为使用了webpack打包了测试文件,因此会影响karma-coverage统计测试文件代码覆盖率结果,因此此处咱们使用karma-coverage官网推荐istanbul插件统计代码覆盖率(istanbul会将统计结果注入源码),因此由karma-coverage生成覆盖率报告。
安装依赖包:npm install karma-coverage babel-plugin-istanbul -D
reporters: ['progress','coverage'], // karma-coverage配置 coverageReporter: { dir: 'coverage/', /* 多个报告类型 */ reporters: [ {type: 'text-summary',subdir:'.',file:'textSummary.txt'}, {type:'text-summary'}, {type:'html',subdir:'html'} ] }, webpack:{ module:{ rules:[ { test: /\.js$/, exclude:[ resolve('node_modules') ], loader: 'babel-loader', query:{ // 引入了istanbul插件来检测Coverage。安装babel-plugin-istanbul插件 plugins:['istanbul'] } }, ] } }
karma start
karma run
karma-coverage:https://www.zybuluo.com/wangx...
前端自动化单元测试初探:http://www.51testing.com/html...
karma笔记:https://segmentfault.com/n/13...前端