首先,爲何咱們瞭解TDD與BDD的是什麼意思?javascript
在實際項目中,大部分都是採用BDD的形式進行開發,也就是行爲驅動開發。html
TDD,測試驅動開發,先編寫單元測試代碼,再去實現功能。java
更爲詳細的內容請自行查閱資料。node
既然要作TDD作開發模式,首先咱們得了解node assert,大部分單元測試框架都是基於node assert的,因此先熟悉了node assert才能更好上手should.js。git
AssertionError
fn
函數拋出錯誤。Mocha項目地址:visionmedia.github.com/mocha/github
should項目地址:github.com/visionmedia…chrome
Karma項目地址: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
複製代碼