-
寫在前面:
這是筆者首次使用tdd的方式編寫程序,也是首次編寫一個較為復(fù)雜的javascript程序。對于編程經(jīng)驗欠缺的人而言,這無疑是一個不小的挑戰(zhàn)。最終,通過反復(fù)瀏覽李小波老師的編程視頻,還是順利編寫出了FREQUENCY NUMBER的程序。
-
開發(fā)環(huán)境:
virtualbox和bluefish
version
-
為什么使用git?
編程時使用git作為文件版本控制系統(tǒng)相比svn等有著不可比擬的優(yōu)勢。
git分支管理的操作全部由指針實現(xiàn),這使得無論版本庫里有多少文件,git創(chuàng)建分支的速度都只需不到一秒。
并且作為分布式版本控制系統(tǒng),git無需聯(lián)網(wǎng)便可工作,工作并不依賴于中央服務(wù)器,這大大提高了系統(tǒng)的安全性和程序員的工作效率。
分布式版本控制系統(tǒng)(圖源:廖雪峰的官方網(wǎng)站) git小技巧:配置別名
如果想用git st來表示git status,只需在終端鍵入以下命令:
$ git config --global alias.st status
便可使用git st作為git status的簡寫了!
ps:合理地配置別名能夠大量提高工作效率
-
git學(xué)習(xí)推薦閱讀:Git教程-廖雪峰
廖雪峰老師以風(fēng)趣幽默的語言對git做了深入淺出的介紹和簡潔明了的示例,相信你閱讀后會迅速上手git。
-
配置jasmine的一些操作
安裝好jasmine后,在spec/support目錄下可看到配置文件jasmine.json,其中可以自定義各種參數(shù):
{
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"helpers": [
"helpers/**/*.js"
],
"stopSpecOnExpectationFailure": false,
"random": false
}
其中
spec_dir: 指定掃描測試文件的根目錄
spec_files: 匹配測試文件的表達(dá)式
helpers: Helper 文件會在所有的 spec 之前預(yù)先執(zhí)行
stopSpecOnExpectationFailure: 當(dāng)有錯誤出現(xiàn)時是否終止所有測試
random: 是否打亂測試順序
有關(guān)jasmine配置的詳盡教程請參閱:使用jasmine測試node項目-趙小吉
-
使用jasmine-spec-reporter獲得更具體的測試信息
我們在使用jasmine時發(fā)現(xiàn),jasmine反饋的通過的測試信息僅僅由幾個綠色的小點表示,這樣的顯示不利于我們調(diào)試。這時我們可以安裝jasmine-spec-reporter模塊來解決這個問題。
首先在終端里鍵入以下代碼在本地安裝jasmine-spec-reporter
sudo npm install jasmine-spec-reporter --save-dev```
然后在/spec/目錄下新建名為helpers的文件夾,在其中創(chuàng)建reporter.js文件
*code:*
const SpecReporter = require('jasmine-spec-reporter').SpecReporter;
jasmine.getEnv().clearReporters(); // remove default reporter logs
jasmine.getEnv().addReporter(new SpecReporter({ // add jasmine-spec-reporter
spec: {
displayPending: true
}
}));
最后,讓我們來檢測一下是否配置成功:

可以看到,每一個測試的詳細(xì)信息都顯示在了屏幕上。
至此,便可以使用spec-reporter的便利功能了!
如果還想更深一步了解jasmine-spec-reporter,建議訪問[jasmine-spec-reporter官方網(wǎng)站](https://www.npmjs.com/package/jasmine-spec-reporter)
***
* **接下來貼出測試程序和主程序代碼:**


***
* jasmine運行結(jié)果:

* git log:

***
對于js語言不熟悉的朋友,可以參閱[javascript參考手冊](http://www.w3school.com.cn/jsref/),其中對于JavaScript本地對象和內(nèi)置對象以及BOM等都有細(xì)致的闡述。
***
* **結(jié)語:**
TDD 測試驅(qū)動開發(fā)(Test-Driven Development)作為敏捷開發(fā)的核心技術(shù),能夠得到如此多的人的肯定不是沒有理由的。tdd使得編程具有了目的性,這樣寫出的代碼便于維護(hù)且可讀性高。但正所謂天下沒有免費的午餐,要想享用tdd這頓大餐,應(yīng)當(dāng)對編程語言有深入的理解。否則便會像筆者一樣,在編寫過程中處處碰壁,最后還得借助小波老師的編程視頻?д?。


