karma-cli
karma
命令npm install -g karma-cli
複製代碼
npm install -S karma
複製代碼
karma-mocha
:若想驅動mocha
框架進行測試,就必須安裝karma-mocha
;其餘不一樣的單元測試框架分別也有本身對於的插件karma-chrome-launcher
:提供了karma與chrome的適配器
karma
選擇什麼瀏覽器進行測試,就須要安裝對於的適配器插件npm install -S karma-mocha karma-chrome-launcher
複製代碼
karma init
,進行配置選擇1. Which testing framework do you want to use ? (mocha)
2. Do you want to use Require.js ? (no)
3. Do you want to capture any browsers automatically ? (Chrome)
4. What is the location of your source and test files ? (https://cdn.bootcss.com/jquery/2.2.4/jquery.js, node_modules/should/should.js, test/**.js)
5. Should any of the files included by the previous patterns be excluded ? ()
6. Do you want Karma to watch all the files and run the tests on change ? (yes)
複製代碼
karma.conf.js
frameworks
:使用到的框架
mocha
框架進行測試,這裏就要使用到mocha
files
:能夠將待測試代碼以及它們須要的依賴加載進來browsers
:須要啓動什麼瀏覽器進行測試autoWatch
:是否監聽文件變更,若有變更則從新運行單測singleRun
:是否只運行一次測試(設爲true
的話,瀏覽器窗口不會一直維持在,打開進行一次測試後就會關閉了)
singleRun
要配合其餘的持續集成工程來使用,必需要設置singleRun=true
,由於持續集成時不須要屢次運行測試// karma.conf.js
module.exports = function(config) {
config.set({
// 跟路徑,後面配置的基本全部相對路徑都會根據這個路徑來構造
basePath: '',
// 使用到的框架,目前karma支持的框架詳見 https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['mocha'],
// 會在瀏覽器中執行的代碼:
files: [
'test/main.js',
{
pattern: 'src/**/*.js',
included: false // false 表示初始化的時候不會使用 script 標籤直接將相關 js 引入到瀏覽器,須要本身寫代碼加載
}
],
// 須要從files中排除掉的文件
exclude: [],
// 須要作預處理的文件,以及這些文件對應的預處理器
preprocessors: {
'src/**/*.js': ['babel', 'coverage'],
'test/**/!(main).js', ['babel', 'coverage'],
'node_modules/protectobject/src/**/*.js': ['babel']
},
// babel預處理器的配置
babelPreprocessor: {
options: {
presets: ['es2015', 'stage-0'],
plugins: ['transform-decorators-legacy', 'transform-es2015-modules-amd']
}
},
// 覆蓋率報告器配置:
coverageReporter: {
type: 'html',
dir: 'coverage'
},
// 實際使用什麼報告器,全部可用的報告器詳見 https://npmjs.org/browse/keyword/karma-reporter
reporters: ['dots', 'coverage'],
// 服務器端口號
port: 9876,
// 在輸出內容(報告器和日誌)中啓用/禁用顏色
colors: true,
// 日誌級別,可取值 config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO
// 啓動/禁用監視文件變化從新執行測試的功能
autoWatch: true,
// 要測試的目標環境
bowers: ['Chrome', 'Firefox', 'Safari'],
// 啓動/禁用持續集成模式,啓動的話,karma捕獲瀏覽器,運行測試並退出
singleRun: false,
// 併發級別,應該同時啓動多少個瀏覽器
concurrency: Infinity
})
}
複製代碼
karma start
複製代碼
運行成功: javascript
files:
What is the location of your source and test files ?
,即將要測試的文件,及測試文件所需的依賴項寫入test/main.js
須要使用到jquery.js
karma.conf.js
的files
中填入[jquery.js, test/main.js]
test/main.js
無需手動引入jquery.js
也能使用jquery.js
了require.js
Do you want to use Require.js ? (yes)
require()
語法來引入依賴,在使用Karma
測試時就會報錯Uncaught ReferenceError: module is not defined
,Karma
是運行在瀏覽器端的,不支持Node.js語法