開發者們都一致認為單元測試在開發項目中十分有好處。它們幫助你保證代碼的質量,從而確保更穩定的研發,即使需要重構時也更有信心。
測試驅動開發流程圖
AngularJS的代碼聲稱其較高的可測性確實是合理的。單單文檔中列出端對端的測試實例就能說明。就像AngularJS這樣的項目雖然都說單元測試很簡單但真正做好卻不容易。即使官方文檔中以提供了詳盡的實例,但在我的實際應用中卻還是很有挑戰。這裡我就簡單示范一下我是怎麼操作的吧.
Karma 是來Angular團隊針對JavaScript開發的一個測試運行框架。它很方便的實現了自動執行測試任務從而替代了繁瑣的手工操作(好比回歸測試集或是加載目標測試的依賴關系)Karma 和Angular的協作就好比花生醬和果凍.
只需要在Karma中定義好配置文件啟動它,接下來它就會在預期的測試環境下的自動執行測試用例。你可以在配置文件中制定相關的測試環境。angular-seed,是我強烈推薦的可以快速實施的方案。在我近期的項目中Karma 的配置如下:
module.exports = function(config) {
config.set({
basePath: '../',
files: [
'app/lib/angular/angular.js',
'app/lib/angular/angular-*.js',
'app/js/**/*.js',
'test/lib/recaptcha/recaptcha_ajax.js',
'test/lib/angular/angular-mocks.js',
'test/unit/**/*.js'
],
exclude: [
'app/lib/angular/angular-loader.js',
'app/lib/angular/*.min.js',
'app/lib/angular/angular-scenario.js'
],
autoWatch: true,
frameworks: ['jasmine'],
browsers: ['PhantomJS'],
plugins: [
'karma-junit-reporter',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine',
'karma-phantomjs-launcher'
],
junitReporter: {
outputFile: 'test_out/unit.xml',
suite: 'unit'
}
})
}