Vue进阶(五十六):vue-cli脚手架build目录中的karma.conf.js配置文件

举报
SHQ5785 发表于 2020/12/30 00:00:44 2020/12/30
【摘要】 这个配置文件是命令 npm run unit 的入口配置文件,主要用于单元测试。 这条命令的内容如下 “cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run” 这条命令中的 cross-env 是跨平台设置环境变量,你在命令行中设置环境变量加上这句话就是了。 karma sta...

这个配置文件是命令 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将测试运行在所有指定的浏览器上。
由于这是一个系统的配置文件,将涉及很多的模块和插件,所以这部分内容我将分多个文章讲解,请关注我博客的其他文章

// 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配置文件,先来解释这个配置文件的内容
var webpackConfig = require('../../build/webpack.test.conf')

// 下面是karma测试文件的配置方式
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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

(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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

(2) karma

这个工具是一个平台,把模拟真实的浏览器插件、js测试框架等插件集合到一起构建一个用于测试代码的一个平台。
这个工具的基本用法如下:

module.exports = function(config){ config.set({ browsers: ['Chrome','Firefox'], ... })
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结语

这个测试框架如果有兴趣可以自行深入了解,难度不亚于webpack。
后面还有一个 npm run e2e 这个命令运行的是 nightwatch的端到端的测试,也就是说,上面的操作是确保程序能够在浏览器中跑起来,而nightwatch是用来模拟用户来测试在浏览器中程序运行起来有没有bug,通过nightwatch的配置来测试。
通过npm run test可以运行上面的所有设置
关于这部分内容,vue-cli只是做个一个框子出来,如果你想使用这部分东西你要编写部分配置,但是这部分内容对于前端来说显得有点牵强,说白了就是上手很难东西很多又不是特别重要。

文章来源: shq5785.blog.csdn.net,作者:No Silver Bullet,版权归原作者所有,如需转载,请联系作者。

原文链接:shq5785.blog.csdn.net/article/details/90041729

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。