博客 / 詳情

返回

karma+mocha+chai前端單元測試環境搭建

測試框架認識

karma:提供瀏覽器測試環境,在此karma提供測試服務。
mocha:提供Javascript測試環境,在此作為karma測試框架,被引入karma中使用。
chai:斷言庫。

項目中安裝karma
安裝karma:npm install karma -D
全局安裝karma腳手架,便於使用karma命令:npm install karma-cli -g
生成karma配置文件
進入測試文件夾:cd **
生成karma配置文件:karma init karma.conf.js(配置文件名)
clipboard.png
安裝測試框架
安裝依賴包:npm install mocha karma-mocha chai karma-chai karma-chrome-launcher -D
説明:karma-mocha、karma-chai、karma-chrome-launcher為將框架引入karma的中間件,在配置文件plugins中配置
// karma.conf.js文件:
frameworks: ['mocha',"chai"],
plugins: [
            "karma-mocha",
            "karma-chrome-launcher",
            "karma-chai"
        ]
安裝預處理器webpack
由於測試文件中沒有文件模塊化,所以引入webpack。
安裝webpack依賴包:npm install webpack webpack-merge karma-webpack -D
安裝babel-loader依賴包:npm install babel-loader babel-core babel-preset-2015 -D
plugins: [
            // ...
            "karma-webpack"
        ],
preprocessors:{
    '待預處理文件':['webpack']
},
webpack:{
    // webpack相關配置,無entry與output配置項
}
安裝預處理器karma-coverage,統計代碼覆蓋率
由於使用了webpack打包了測試文件,所以會影響karma-coverage統計測試文件代碼覆蓋率結果,所以此處我們使用karma-coverage官網推薦istanbul插件統計代碼覆蓋率(istanbul會將統計結果注入源碼),所以由karma-coverage生成覆蓋率報告。
安裝依賴包:npm install karma-coverage babel-plugin-istanbul -D
reporters: ['progress','coverage'],
// karma-coverage配置
coverageReporter: {
            dir: 'coverage/',
            /* 多個報告類型 */
            reporters: [
                {type: 'text-summary',subdir:'.',file:'textSummary.txt'},
                {type:'text-summary'},
                {type:'html',subdir:'html'}
            ]
        },
webpack:{
    module:{
        rules:[
            {
                test: /\.js$/,
                exclude:[
                    resolve('node_modules')
                ],
                loader: 'babel-loader',
                query:{
                    // 引入了istanbul插件來檢測Coverage。安裝babel-plugin-istanbul插件
                    plugins:['istanbul']
                }
            },
        ]
    }
}
啓動karma服務
karma start
啓動測試
karma run
參考網站:

karma-coverage:https://www.zybuluo.com/wangx...
前端自動化單元測試初探:http://www.51testing.com/html...
karma筆記:https://segmentfault.com/n/13...

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.