vue-cli脚手架build目录中的karma.conf.js配置文件
本文系统讲解vue-cli脚手架build目录中的karma.conf.js配置文件
- 这个配置文件是命令 npm run unit 的入口配置文件,主要用于单元测试
- 这条命令的内容如下 "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run"
这条命令中的 cross-env 是跨平台设置环境变量,你在命令行中设置环境变量加上这句话就是了
karma start test/unit/karma.conf.js 是使用karma测试server来运行测试
--single-run 是指定的参数,用来告诉karma将测试运行在所有指定的浏览器上
- 由于这是一个系统的配置文件,将涉及很多的模块和插件,所以这部分内容我将分多个文章讲解,请关注我博客的其他文章
- 关于注释
- 当涉及到较复杂的解释我将通过标识的方式(如(1))将解释写到单独的注释模块,请自行查看
- 上代码
// This is a karma config file. For more details see
// http://karma-runner.github.io/0.13/config/configuration-file.html
// we are also using it with karma-webpack
// https://github.com/webpack/karma-webpack
// 下面是webpack.test.conf配置文件,先来解释这个配置文件的内容
// 详情请看 (1)
var webpackConfig = require('../../build/webpack.test.conf')
// 下面是karma测试文件的配置方式
// 先介绍一下karma,详情看 (2)
module.exports = function (config) {
config.set({
// to run in additional browsers:
// 1. install corresponding karma launcher
// http://karma-runner.github.io/0.13/config/browsers.html
// 2. add it to the `browsers` array below.
// 这里使用的是PhantomJS作为浏览器测试环境,这个插件支持DOM, CSS, JSON, Canvas, and SVG.的解析
browsers: ['PhantomJS'],
// 下面的测试框架是用来测试js
frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'],
// 下面的是用来出报告的
reporters: ['spec', 'coverage'],
// 下面指的是index.js文件在browsers里面运行
// 关于index.js其实就是把需要测试的文件都require进来,然后一股脑的在上面的browsers里面跑,使用frameworks测试js,通过reporters输出报告
files: ['./index.js'],
// 下面是为文件制定预处理器,也就是说测试index.js之前用webpack和sourcemap处理一下
preprocessors: {
'./index.js': ['webpack', 'sourcemap']
},
下面给webpack指定相关的配置文件
webpack: webpackConfig,
webpackMiddleware: {
noInfo: true
},
// 下面是覆盖报告
// coverage是代码测试覆盖率的一个reporter,也就是说告诉你项目的代码有多少测试了
// 下面是vue-cli对这个的一个配置
coverageReporter: {
dir: './coverage',
reporters: [
{ type: 'lcov', subdir: '.' },
{ type: 'text-summary' }
]
}
})
}
解释
(1) 本文解释 webpack.test.conf.js 配置文件
这个配置文件用来指定测试环境的webpack配置
// This is the webpack config used for unit tests.
// 下面是工具配置文件,用来处理各种css文件
var utils = require('./utils')
// 引入webpack模块,使用内置插件或者方法
var webpack = require('webpack')
// 下面是用webpack-merge插件,用来合并配置对象
var merge = require('webpack-merge')
// 下面是webpack.base.conf.js配置文件,请自行查看我的其他博客
var baseConfig = require('./webpack.base.conf')
// 下面是合并配置对象
var webpackConfig = merge(baseConfig, {
// use inline sourcemap for karma-sourcemap-loader
module: {
rules: utils.styleLoaders()
},
// 测试环境使用 inline-source-map生成map文件
devtool: '#inline-source-map',
resolveLoader: {
// 下面是配置如何解析Loader的,就是说使用scss-loader实际用sass-loader
alias: {
// necessary to to make lang="scss" work in test when using vue-loader's ?inject option
// see discussion at https://github.com/vuejs/vue-loader/issues/724
'scss-loader': 'sass-loader'
}
},
plugins: [
// 下面设置环境变量process.env是"testing"
new webpack.DefinePlugin({
'process.env': require('../config/test.env')
})
]
})
// no need for app entry during tests
// 测试环境不需要入口文件,因为要测试的就是入口文件,哈哈
// 使用delete操作符,删除对象中的某一项
delete webpackConfig.entry
module.exports = webpackConfig
(2) karma
这个工具是一个平台,把模拟真实的浏览器插件、js测试框架等插件集合到一起构建一个用于测试代码的一个平台
这个工具的基本用法就是
module.exports = function(config){
config.set({
browsers: ['Chrome','Firefox'],
...
// 这里还有很多设置项,具体查阅 https://karma-runner.github.io/latest/config/browsers.html
})
}
结语
这个测试框架如果有兴趣可以自行深入了解,难度不亚于webpack
后面还有一个 npm run e2e 这个命令运行的是 nightwatch的端到端的测试,也就是说,上面的操作是确保程序能够在浏览器中跑起来,而nightwatch是用来模拟用户来测试在浏览器中程序运行起来有没有bug,通过nightwatch的配置来测试
通过npm run test可以运行上面的所有设置
关于这部分内容,vue-cli只是做个一个框子出来,如果你想使用这部分东西你要编写部分配置,但是这部分内容对于前端来说显得有点牵强,说白了就是上手很难东西很多又不是特别重要。
这里我关于vue-cli的介绍就到此为止了,nightwatch的内容感兴趣的自己摸索吧
vue-cli脚手架build目录中的karma.conf.js配置文件的更多相关文章
- vue-cli 2.x脚手架build目录中的webpack.base.conf.js配置文件
此文章用来解释vue-cli脚手架build目录中的webpack.base.conf.js配置文件,适用于vue-cli 2.x版本 此配置文件是vue开发环境的wepack相关配置文件,主要用来处 ...
- vue-cli脚手架build目录中的dev-server.js配置文件
本文系统讲解vue-cli脚手架build目录中的dev-server.js配置文件 这个配置文件是命令npm run dev 和 npm run start 的入口配置文件,主要用于开发环境 由于这 ...
- vue-cli脚手架build目录中的webpack.dev.conf.js配置文件
此文章用来解释vue-cli脚手架build目录中的webpack.dev.conf.js配置文件 此配置文件是vue开发环境的wepack相关配置文件 关于注释 当涉及到较复杂的解释我将通过标识的方 ...
- vue-cli脚手架build目录中的build.js配置文件
该随笔收藏自: vue-cli脚手架build目录中的build.js配置文件 这个配置文件是命令npm run build 的入口配置文件,主要用于生产环境 由于这是一个系统的配置文件,将涉及很多的 ...
- vue-cli脚手架build目录中check-versions.js的配置
转载自:https://www.cnblogs.com/ye-hcj/p/7074363.html 本文介绍vue-cli脚手架build目录中check-versions.js的配置 本文件是用来检 ...
- vue-cli脚手架build目录中的webpack.prod.conf.js配置文件
// 下面是引入nodejs的路径模块 var path = require('path') // 下面是utils工具配置文件,主要用来处理css类文件的loader var utils = req ...
- vue-cli脚手架build目录中的webpack.base.conf.js配置文件
转载自:http://www.cnblogs.com/ye-hcj/p/7082620.html webpack.base.conf.js配置文件// 引入nodejs路径模块 var path = ...
- vue-cli脚手架build目录下utils.js工具配置文件详解
此文章用来解释vue-cli脚手架build目录中的utils.js配置文件 此配置文件是vue开发环境的wepack相关配置文件,主要用来处理css-loader和vue-style-loader ...
- 13. Vue CLI脚手架
一. Vue CLI 介绍 1. 什么是Vue CLI? Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.Vue CLI 致力于将 Vue 生态中的工具基础标准化.它确保了各种构建工 ...
随机推荐
- [转载]Spring配置文件详解一:
原文地址:与base-package="com.xx">Spring配置文件详解一:<context:annotation-config/>与<contex ...
- Linux Ctrl+Z VS Ctrl+C 以及+Z的使用方法
问题及处理: Ctrl+Z是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任 ...
- 机器学习三剑客之Matplotlib
matplotlib Matplotlib 是Python 2D绘图领域的基础套件,它让使用者将数据图形化,并提供多样化的输出格式.这里将会以四个小案例探索Matplotlib的常见用法 绘制折线 ...
- Windows平台下Qt QOpenGL中glutSolidSphere()方法未定义的解决方法
Windows平台下Qt中glut库的使用 用Qt中的QGLWidget窗体类中是不包括glut工具库的,难怪在myGLWidget(在我的程序中是QGLWidget的派生类)中绘制实心球体是 ...
- 在线显示office文件
微信或手机浏览器在线显示office文件 1.判断浏览器类型 HttpServletRequest req = ServletActionContext.getRequest(); String us ...
- svn文件大小类型限制,提交必须加多少字的说明
#!/bin/sh REPOS="$1" TXN="$2" #此处更改大小限制,这里是5M MAX_SIZE= #此处增加限制文件后缀名 FILTER='\.( ...
- Linux下tar命令的各种参数选项和他们的作用整理
1.建立TAR包(打包)命令格式:tar cvf TAR包文件名.tar 所备份的文件或目录功能描述:tar cvf命令用于把指定的目录或文件打包到指定的文件中.“c”指定建立(或压缩)TAR包,“v ...
- 201621123014《Java程序设计》第十三周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网 ...
- python在字符串中查找字符
两类函数: find(),rfind() index(),rindex() 找到了都返回下标. find找不到返回-1,index找不到抛出ValueError. 带r的表示从右向左找. 都可以使用第 ...
- 利用HTML5开发Android笔记(中篇)
资源来自于www.mhtml5.com 杨丰盛老师成都场的PPT分享 一个很简明的demo 可以作为入门基础 学习的过程中做了点笔记 整理如下 虽然内容比较简单 但是数量还是比较多的 所以分了3篇 ( ...