本文系统讲解vue-cli脚手架build目录中的karma.conf.js配置文件

  1. 这个配置文件是命令 npm run unit 的入口配置文件,主要用于单元测试

    • 这条命令的内容如下 "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run"
    1. 这条命令中的 cross-env 是跨平台设置环境变量,你在命令行中设置环境变量加上这句话就是了
    2. karma start test/unit/karma.conf.js 是使用karma测试server来运行测试
    3. --single-run 是指定的参数,用来告诉karma将测试运行在所有指定的浏览器上
  2. 由于这是一个系统的配置文件,将涉及很多的模块和插件,所以这部分内容我将分多个文章讲解,请关注我博客的其他文章
  3. 关于注释
    • 当涉及到较复杂的解释我将通过标识的方式(如(1))将解释写到单独的注释模块,请自行查看
  4. 上代码
  1. // This is a karma config file. For more details see
  2. // http://karma-runner.github.io/0.13/config/configuration-file.html
  3. // we are also using it with karma-webpack
  4. // https://github.com/webpack/karma-webpack
  5. // 下面是webpack.test.conf配置文件,先来解释这个配置文件的内容
  6. // 详情请看 (1)
  7. var webpackConfig = require('../../build/webpack.test.conf')
  8. // 下面是karma测试文件的配置方式
  9. // 先介绍一下karma,详情看 (2)
  10. module.exports = function (config) {
  11. config.set({
  12. // to run in additional browsers:
  13. // 1. install corresponding karma launcher
  14. // http://karma-runner.github.io/0.13/config/browsers.html
  15. // 2. add it to the `browsers` array below.
  16. // 这里使用的是PhantomJS作为浏览器测试环境,这个插件支持DOM, CSS, JSON, Canvas, and SVG.的解析
  17. browsers: ['PhantomJS'],
  18. // 下面的测试框架是用来测试js
  19. frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'],
  20. // 下面的是用来出报告的
  21. reporters: ['spec', 'coverage'],
  22. // 下面指的是index.js文件在browsers里面运行
  23. // 关于index.js其实就是把需要测试的文件都require进来,然后一股脑的在上面的browsers里面跑,使用frameworks测试js,通过reporters输出报告
  24. files: ['./index.js'],
  25. // 下面是为文件制定预处理器,也就是说测试index.js之前用webpack和sourcemap处理一下
  26. preprocessors: {
  27. './index.js': ['webpack', 'sourcemap']
  28. },
  29. 下面给webpack指定相关的配置文件
  30. webpack: webpackConfig,
  31. webpackMiddleware: {
  32. noInfo: true
  33. },
  34. // 下面是覆盖报告
  35. // coverage是代码测试覆盖率的一个reporter,也就是说告诉你项目的代码有多少测试了
  36. // 下面是vue-cli对这个的一个配置
  37. coverageReporter: {
  38. dir: './coverage',
  39. reporters: [
  40. { type: 'lcov', subdir: '.' },
  41. { type: 'text-summary' }
  42. ]
  43. }
  44. })
  45. }

解释

  1. (1) 本文解释 webpack.test.conf.js 配置文件
  2. 这个配置文件用来指定测试环境的webpack配置
  3. // This is the webpack config used for unit tests.
  4. // 下面是工具配置文件,用来处理各种css文件
  5. var utils = require('./utils')
  6. // 引入webpack模块,使用内置插件或者方法
  7. var webpack = require('webpack')
  8. // 下面是用webpack-merge插件,用来合并配置对象
  9. var merge = require('webpack-merge')
  10. // 下面是webpack.base.conf.js配置文件,请自行查看我的其他博客
  11. var baseConfig = require('./webpack.base.conf')
  12. // 下面是合并配置对象
  13. var webpackConfig = merge(baseConfig, {
  14. // use inline sourcemap for karma-sourcemap-loader
  15. module: {
  16. rules: utils.styleLoaders()
  17. },
  18. // 测试环境使用 inline-source-map生成map文件
  19. devtool: '#inline-source-map',
  20. resolveLoader: {
  21. // 下面是配置如何解析Loader的,就是说使用scss-loader实际用sass-loader
  22. alias: {
  23. // necessary to to make lang="scss" work in test when using vue-loader's ?inject option
  24. // see discussion at https://github.com/vuejs/vue-loader/issues/724
  25. 'scss-loader': 'sass-loader'
  26. }
  27. },
  28. plugins: [
  29. // 下面设置环境变量process.env是"testing"
  30. new webpack.DefinePlugin({
  31. 'process.env': require('../config/test.env')
  32. })
  33. ]
  34. })
  35. // no need for app entry during tests
  36. // 测试环境不需要入口文件,因为要测试的就是入口文件,哈哈
  37. // 使用delete操作符,删除对象中的某一项
  38. delete webpackConfig.entry
  39. module.exports = webpackConfig
  40. (2) karma
  41. 这个工具是一个平台,把模拟真实的浏览器插件、js测试框架等插件集合到一起构建一个用于测试代码的一个平台
  42. 这个工具的基本用法就是
  43. module.exports = function(config){
  44. config.set({
  45. browsers: ['Chrome','Firefox'],
  46. ...
  47. // 这里还有很多设置项,具体查阅 https://karma-runner.github.io/latest/config/browsers.html
  48. })
  49. }

结语

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

vue-cli脚手架build目录中的karma.conf.js配置文件的更多相关文章

  1. vue-cli 2.x脚手架build目录中的webpack.base.conf.js配置文件

    此文章用来解释vue-cli脚手架build目录中的webpack.base.conf.js配置文件,适用于vue-cli 2.x版本 此配置文件是vue开发环境的wepack相关配置文件,主要用来处 ...

  2. vue-cli脚手架build目录中的dev-server.js配置文件

    本文系统讲解vue-cli脚手架build目录中的dev-server.js配置文件 这个配置文件是命令npm run dev 和 npm run start 的入口配置文件,主要用于开发环境 由于这 ...

  3. vue-cli脚手架build目录中的webpack.dev.conf.js配置文件

    此文章用来解释vue-cli脚手架build目录中的webpack.dev.conf.js配置文件 此配置文件是vue开发环境的wepack相关配置文件 关于注释 当涉及到较复杂的解释我将通过标识的方 ...

  4. vue-cli脚手架build目录中的build.js配置文件

    该随笔收藏自: vue-cli脚手架build目录中的build.js配置文件 这个配置文件是命令npm run build 的入口配置文件,主要用于生产环境 由于这是一个系统的配置文件,将涉及很多的 ...

  5. vue-cli脚手架build目录中check-versions.js的配置

    转载自:https://www.cnblogs.com/ye-hcj/p/7074363.html 本文介绍vue-cli脚手架build目录中check-versions.js的配置 本文件是用来检 ...

  6. vue-cli脚手架build目录中的webpack.prod.conf.js配置文件

    // 下面是引入nodejs的路径模块 var path = require('path') // 下面是utils工具配置文件,主要用来处理css类文件的loader var utils = req ...

  7. vue-cli脚手架build目录中的webpack.base.conf.js配置文件

    转载自:http://www.cnblogs.com/ye-hcj/p/7082620.html webpack.base.conf.js配置文件// 引入nodejs路径模块 var path = ...

  8. vue-cli脚手架build目录下utils.js工具配置文件详解

    此文章用来解释vue-cli脚手架build目录中的utils.js配置文件 此配置文件是vue开发环境的wepack相关配置文件,主要用来处理css-loader和vue-style-loader ...

  9. 13. Vue CLI脚手架

    一. Vue CLI 介绍 1. 什么是Vue CLI? Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.Vue CLI 致力于将 Vue 生态中的工具基础标准化.它确保了各种构建工 ...

随机推荐

  1. [转载]Google Android开发精华教程

    原文地址:Android开发精华教程">Google Android开发精华教程作者:huiyi8zai Android是Google于2007年11月5日宣布的基于Linux平台的开 ...

  2. Jboss remote getshell (JMXInvokerServlet) vc版

    #include "stdafx.h" #include <Windows.h> #include <stdio.h> #include <winht ...

  3. 利用PushbackReader读取文件中某个字符串之前的内容

    package File; import java.io.FileReader; import java.io.IOException; import java.io.PushbackReader; ...

  4. 做一个完整的Java Web项目需要掌握的技能

    最近自己做了几个JavaWeb项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收获,列举出在做项目的整个过程中,所需要用到的技能和知识点,带给还没有真正接触过完整Java Web项 ...

  5. Python中的exec、eval的区别

    通过exec可以执行动态Python代码,类似Javascript的eval功能: 而Python中的eval函数可以计算Python表达式,并返回结果: (exec不返回结果,print(eval( ...

  6. Oracle中的BLOB和CLOB【转载】

    原文地址:http://jelly.iteye.com/blog/65796 一.区别和定义 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多 ...

  7. 爬虫第三篇:requests模块

    requests模块其实就是对urllib.request模块的进步一不优化,提供了很多可选的参数,同时简化了操作.下面我还是贴上具体操作的代码. requests GET请求 GET请求html文件 ...

  8. DH03-单一职责原则

    模式简介 就一个类而言,应该仅有一个引起它变化的原因.不要存在多于一个导致类变更的原因.遵循单一职责原则.分别建立两个类T1和T2,使T1完成P1功能,T2完成P2功能.当修改T1时,不会使职责P2发 ...

  9. WPF中的事件及冒泡事件和隧道事件(预览事件)的区别

    WPF快速指导10:WPF中的事件及冒泡事件和隧道事件(预览事件)的区别   WPF快速指导10:WPF中的事件及冒泡事件和隧道事件(预览事件)的区别 本文摘要: 1:什么是路由事件: 2:中断事件路 ...

  10. shell获取ip地址

    Mac: $ ifconfig en0|awk -F"[ ]+" '/inet/{print $2}' fe80::a211:9bff:fe15:%en0 192.168.0.10 ...