国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

關于Vue Webpack2單元測試示例詳解

來源:懂視網 責編:小采 時間:2020-11-27 22:32:56
文檔

關于Vue Webpack2單元測試示例詳解

關于Vue Webpack2單元測試示例詳解:前言 最近發現一個問題,vue-cli 提供的官方模板確實好用。但一直用下來手賤毛病又犯了,像穿了別人的內衣,總感覺不舒服。 所以有機會就瞎倒騰了一遍,總算把各個流程摸了一把。這里分享一下配置帶覆蓋率的單元測試。分享出來供大家參考學習,話不多少了,來
推薦度:
導讀關于Vue Webpack2單元測試示例詳解:前言 最近發現一個問題,vue-cli 提供的官方模板確實好用。但一直用下來手賤毛病又犯了,像穿了別人的內衣,總感覺不舒服。 所以有機會就瞎倒騰了一遍,總算把各個流程摸了一把。這里分享一下配置帶覆蓋率的單元測試。分享出來供大家參考學習,話不多少了,來

前言

最近發現一個問題,vue-cli 提供的官方模板確實好用。但一直用下來手賤毛病又犯了,像穿了別人的內衣,總感覺不舒服。

所以有機會就瞎倒騰了一遍,總算把各個流程摸了一把。這里分享一下配置帶覆蓋率的單元測試。分享出來供大家參考學習,話不多少了,來一起看看詳細的介紹:

一、文件結構

基本的文件結構。

├─src
│ ├─assets
│ ├─components
│ ├─app.vue
│ └─main.js
├─test
│ └─unit
│ ├─coverage
│ ├─specs
│ ├─index.js
│ └─karma.conf.js
├─.babelirc
├─webpack.conf.js
└─package.json

二、依賴

根據需要增刪

yarn add -D \
cross-env \
# webpack
webpack \
webpack-merge \
vue-loader \
# babel
babel-core \
babel-loader \
babel-plugin-transform-runtime \
babel-preset-es2015 \
babel-register \
babel-plugin-istanbul \
# karma
karma \
karma-coverage \
karma-phantomjs-launcher \
karma-sourcemap-loader \
karma-spec-reporter \
karma-webpack \
mocha \
karma-mocha \
sinon-chai \
karma-sinon-chai \
chai \
sinon \

三、入口

先從 package.json 開始。跟官方的一致。設置 BABEL_ENV 可以在測試的時候才讓 Babel 引入 istanbul 計算覆蓋率。

{
 "scripts": {
 "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
 "test": "npm run unit",
 }
}

四、配置 Babel

在 .babelirc 中:

{
 "presets": ["es2015"],
 "plugins": ["transform-runtime"],
 "comments": false,
 "env": {
 "test": {
 "plugins": [ "istanbul" ]
 }
 }
}

按需設置,寫 Chrome Extension 的話用 es2016 就行。

Babel 的 istanbul 插件是個很聰明的做法。

五、Loader 配置

從 Vue Loader 的文檔可以看到,不需要額外配置,它非常貼心自動識別 Babel Loader。

如果還測試 js 文件那么給源文件夾下的 js 文件配置 Babel Loader 就行。

以 src 為例:

{
 module: {
 rules: [
 {
 test: /\.vue$/,
 loader: 'vue-loader'
 },
 {
 test: /\.js$/,
 loader: 'babel-loader',
 include: [
 path.resolve(__dirname, '../src')
 ],
 exclude: /node_modules/
 }
 ]
 }
}

六、Karma 配置

為 webpack 設置環境

// karma.conf.js
const merge = require('webpack-merge')
let webpackConfig = merge(require('../../webpack.conf'), {
 devtool: '#inline-source-map',
 plugins: [
 new webpack.DefinePlugin({
 'process.env': '"testing"'
 })
 ]
})
// no need for app entry during tests
delete webpackConfig.entry

接著輸出 karma 配置,基本沿用官方的配置。注意不同的瀏覽器需要安裝不同的 karma 插件。

// karma.conf.js
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.
 browsers: ['Chrome'],
 frameworks: ['mocha', 'sinon-chai'],
 reporters: ['spec', 'coverage'],
 files: ['./index.js'],
 preprocessors: {
 './index.js': ['webpack', 'sourcemap']
 },
 webpack: webpackConfig,
 webpackMiddleware: {
 noInfo: true
 },
 coverageReporter: {
 dir: './coverage',
 reporters: [
 { type: 'lcov', subdir: '.' },
 { type: 'text-summary' }
 ]
 }
 })
}

七、引入所有組件

在 test/unit/index.js 里,這是官方的配置:

// require all test files (files that ends with .spec.js)
const testsContext = require.context('./specs', true, /\.spec$/)
testsContext.keys().forEach(testsContext)
// require all src files except main.js for coverage.
// you can also change this to match only the subset of files that
// you want coverage for.
const srcContext = require.context('src', true, /^\.\/(?!main(\.js)?$)/)
srcContext.keys().forEach(srcContext)

因為之前配置 loader 時 src 文件夾下的 js 才會被收集計算覆蓋率,所以可以放心 require 。

第二段 require 是為了所有源碼一起算覆蓋率??梢钥吹焦俜脚渲弥慌懦?src 目錄里的 main.js,如果是多入口可以用 /^(?!.*\/main(\.js)?$)/i 排除所有的 main.js 文件。

八、開始測試

這基本上就是所有的配置了。其它的設置應該都是圍繞插件本身,就不贅述。

九、Babeless 配置

如果不需要 Babel 可以用 istanbul-instrumenter-loader 收集覆蓋率。

js 文件的配置同 Babel。

 Vue 文件需要在 options.loaders 選項里為 js 補上:

{
 test: /\.vue$/,
 loader: 'vue-loader',
 options: {
 loaders: {
 'js': 'istanbul-instrumenter-loader'
 }
 }
}

總結

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

關于Vue Webpack2單元測試示例詳解

關于Vue Webpack2單元測試示例詳解:前言 最近發現一個問題,vue-cli 提供的官方模板確實好用。但一直用下來手賤毛病又犯了,像穿了別人的內衣,總感覺不舒服。 所以有機會就瞎倒騰了一遍,總算把各個流程摸了一把。這里分享一下配置帶覆蓋率的單元測試。分享出來供大家參考學習,話不多少了,來
推薦度:
標簽: VUE 示例 web
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产成人亚洲综合一区 | 日本久久香蕉一本一道 | 福利一区二区 | 国产欧美日韩一区二区三区 | 亚州一区二区 | 国产精品一区二区久久不卡 | 国产精品黄大片在线播放 | 免费大黄网站 | 91精品一区二区 | 夜夜骑日日操 | 国产成人亚洲综合一区 | 日本成人久久 | 国产呦系列 欧美呦 日韩呦 | 在线播放国产一区 | 在线啊v | 欧美日韩国产精品 | 国产三级网站在线观看 | 亚洲人成一区 | 免费h片在线观看 | 99久久国内精品成人免费 | 成人欧美一区二区三区黑人 | 欧美精品v国产精品v日韩精品 | 精品国产综合成人亚洲区 | 97国产精品欧美一区二区三区 | 欧美高清a | 国产一区亚洲二区三区 | 99久久国产亚洲综合精品 | 成人精品视频一区二区三区 | 91po国产在线精品免费观看 | 欧美 日韩 国产 在线 | 免费视频国产 | 欧美 日韩 国产 在线 | 国产一区二区三区视频 | 国内精品伊人久久大香线焦 | 精品日本一区二区三区在线观看 | 国内高清久久久久久久久 | 国产一区二区不卡 | 日韩欧美综合在线 | 91在线 一区 二区三区 | 亚洲欧美日韩综合在线播放 | 国产视频高清在线观看 |