<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        關(guān)于Vue Webpack2單元測試示例詳解

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:32:56
        文檔

        關(guān)于Vue Webpack2單元測試示例詳解

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

        前言

        最近發(fā)現(xiàn)一個(gè)問題,vue-cli 提供的官方模板確實(shí)好用。但一直用下來手賤毛病又犯了,像穿了別人的內(nèi)衣,總感覺不舒服。

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

        一、文件結(jié)構(gòu)

        基本的文件結(jié)構(gòu)。

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

        二、依賴

        根據(jù)需要增刪

        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 開始。跟官方的一致。設(shè)置 BABEL_ENV 可以在測試的時(shí)候才讓 Babel 引入 istanbul 計(jì)算覆蓋率。

        {
         "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" ]
         }
         }
        }

        按需設(shè)置,寫 Chrome Extension 的話用 es2016 就行。

        Babel 的 istanbul 插件是個(gè)很聰明的做法。

        五、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 設(shè)置環(huán)境

        // 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)

        因?yàn)橹芭渲?loader 時(shí) src 文件夾下的 js 才會被收集計(jì)算覆蓋率,所以可以放心 require 。

        第二段 require 是為了所有源碼一起算覆蓋率。可以看到官方配置只排除了 src 目錄里的 main.js,如果是多入口可以用 /^(?!.*\/main(\.js)?$)/i 排除所有的 main.js 文件。

        八、開始測試

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

        九、Babeless 配置

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

        js 文件的配置同 Babel。

         Vue 文件需要在 options.loaders 選項(xiàng)里為 js 補(bǔ)上:

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

        總結(jié)

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        關(guān)于Vue Webpack2單元測試示例詳解

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产免费久久精品丫丫| 亚洲av综合日韩| 亚洲免费视频在线观看| 日韩亚洲变态另类中文| 中文字幕在线观看免费| 亚洲男人的天堂www| 久久午夜无码免费| 97亚洲熟妇自偷自拍另类图片 | 亚洲最大av无码网址| 国产成人亚洲精品电影| 亚洲AV永久无码精品一区二区国产| rh男男车车的车车免费网站 | 亚洲欧洲∨国产一区二区三区| 男女一边摸一边做爽的免费视频| 亚洲女久久久噜噜噜熟女| 高清一区二区三区免费视频| 91精品国产亚洲爽啪在线影院| 日本免费网址大全在线观看| 亚洲第一第二第三第四第五第六| 国产麻豆免费观看91| a免费毛片在线播放| 亚洲Av永久无码精品三区在线 | 亚洲国产精品综合一区在线| 毛片a级毛片免费播放100| 免费的黄色网页在线免费观看| 亚洲午夜久久久久久久久电影网| 久久久免费的精品| 亚洲日本在线电影| 亚洲性日韩精品一区二区三区| 成人无码a级毛片免费| 亚洲中文字幕久在线| 一本色道久久88亚洲综合| 一个人免费视频在线观看www | 亚洲五月六月丁香激情| 成人无遮挡裸免费视频在线观看 | 少妇无码一区二区三区免费| 亚洲av无码久久忘忧草| 全亚洲最新黄色特级网站| 久久免费国产视频| 337P日本欧洲亚洲大胆艺术图| 国产精品亚洲成在人线|