首先,爲何咱們瞭解TDD與BDD的是什麼意思?javascript
在實際項目中,大部分都是採用BDD的形式進行開發,也就是行爲驅動開發。html
TDD,測試驅動開發,先編寫單元測試代碼,再去實現功能。java
更爲詳細的內容請自行查閱資料。node
既然要作TDD作開發模式,首先咱們得了解node assert,大部分單元測試框架都是基於node assert的,因此先熟悉了node assert才能更好上手should.js。git
AssertionError
fn
函數拋出錯誤。Mocha項目地址:http://visionmedia.github.com/mocha/github
should項目地址:https://github.com/visionmedia/should.jschrome
Karma項目地址:http://karma-runner.github.io/npm
cd E: // 進入E盤 mkdir my-karma // 建立my-karma工程文件夾 cd my-karma // 進入my-karma工程文件夾
npm install karma mocha --save-dev
npm install karma-mocha karma-chrome-launcher --save-dev npm install should --save-dev
npm install -g karma-cli
karma start
運行後如圖所示出現了一行INFO信息,並無其餘提示和動做,由於此時咱們沒有配置karma的啓動參數。後面會加入karma.conf.js,這樣karma就會自動啓動瀏覽器並執行測試用例了windows
karma init
/*** * Karma configuration * karma單元測試配置文件 */ module.exports = function(config) { config.set({ /*** * 基礎路徑,用在files,exclude屬性上 */ basePath: "", /** * 測試框架 * 可用的框架:https://npmjs.org/browse/keyword/karma-adapter */ frameworks: ["mocha"], /** * 須要加載到瀏覽器的文件列表 */ files: [ "test/*.js" ], /** * 排除的文件列表 */ exclude: [ ], /** * 在瀏覽器使用以前處理匹配的文件 * 可用的預處理: https://npmjs.org/browse/keyword/karma-preprocessor */ preprocessors: { "karmaTest/test.js" : "coverage" }, /** * 使用測試結果報告者 * 可能的值: "dots", "progress" * 可用的報告者:https://npmjs.org/browse/keyword/karma-reporter */ reporters: ["progress", "coverage"], /** * 使用reporters爲"coverage"時報告輸出的類型和那目錄 */ coverageReporter: { type: "html", dir: "karmaTest/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, /** * 測試啓動的瀏覽器 * 可用的瀏覽器:https://npmjs.org/browse/keyword/karma-launcher */ browsers: ["Chrome"], /** * 開啓或禁用持續集成模式 * 設置爲true, Karma將打開瀏覽器,執行測試並最後退出 */ singleRun: true, /** * 併發級別(啓動的瀏覽器數) */ concurrency: Infinity }); };
test.jspromise
describe('驗證add函數是否正確', function () { it('1 + 2', function () { should(add(1,2)).be.eql(3) }) })
add.js
function add(a, b) { return a + b }
karma start