用Nodejs和Git完成TDD編程---FrequencyNumber


  • 寫在前面:
    這是筆者首次使用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

}

}));

最后,讓我們來檢測一下是否配置成功:
![spec-reporter](http://upload-images.jianshu.io/upload_images/5351401-0f3fd33e1030eccf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
可以看到,每一個測試的詳細(xì)信息都顯示在了屏幕上。
至此,便可以使用spec-reporter的便利功能了!

如果還想更深一步了解jasmine-spec-reporter,建議訪問[jasmine-spec-reporter官方網(wǎng)站](https://www.npmjs.com/package/jasmine-spec-reporter)
***
* **接下來貼出測試程序和主程序代碼:**

![主程序](http://upload-images.jianshu.io/upload_images/5351401-65d2193eba99934b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![測試程序](http://upload-images.jianshu.io/upload_images/5351401-322f4c1237366065.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
***
* jasmine運行結(jié)果:
![result](http://upload-images.jianshu.io/upload_images/5351401-90be387693e7be71.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
* git log:
![git log](http://upload-images.jianshu.io/upload_images/5351401-c4122854f74ef1fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
***
對于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)對編程語言有深入的理解。否則便會像筆者一樣,在編寫過程中處處碰壁,最后還得借助小波老師的編程視頻?д?。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容