在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 持續(xù)集成平臺(tái):travis
瀏覽器端測(cè)試:mocha,chai,phantomjs
搭建 Node.js 開發(fā)環(huán)境
測(cè)試用例:mocha,should,istanbul
線上部署:heroku
Mongodb 與 Mongoose 的使用
使用 superagent 與 cheerio 完成簡(jiǎn)單爬蟲
js 中的那些最佳實(shí)踐
使用 eventproxy 控制并發(fā)
使用 promise 替代回調(diào)函數(shù)
作用域與閉包:this,var,(function () {})
持續(xù)集成平臺(tái):travis
測(cè)試用例:supertest
benchmark 怎么寫
使用 async 控制并發(fā)
學(xué)習(xí)使用外部模塊
一個(gè)最簡(jiǎn)單的 express 應(yīng)用
正則表達(dá)式
cookie 和 session

持續(xù)集成平臺(tái):travis

目標(biāo)

無明確目標(biāo)

知識(shí)點(diǎn)

  1. 學(xué)習(xí)使用 travis-ci 對(duì)項(xiàng)目進(jìn)行持續(xù)集成測(cè)試 (https://travis-ci.org/ )

課程內(nèi)容

首先來看看這個(gè)項(xiàng)目:https://github.com/Ricardo-Li/node-practice-3

http://wiki.jikexueyuan.com/project/node-lessons/images/13-1.png" alt="" />

(圖1)

類似這樣的 badges,在很多項(xiàng)目中都可以看到。前者是告訴我們,這個(gè)項(xiàng)目的測(cè)試目前是通過的;后者是告訴我們,這個(gè)測(cè)試的行覆蓋率是多少。行覆蓋率當(dāng)然是越多越好。測(cè)試的重要性我就不說了。

為什么要使用 travis 這樣的平臺(tái),是因?yàn)樗梢宰屇忝靼鬃约旱捻?xiàng)目在一個(gè)“空白環(huán)境”中,是否能正確運(yùn)行;也可以讓你知道,用不同的 Node.js 版本運(yùn)行的話,有沒有兼容性問題。

當(dāng)你在自己的機(jī)器上跑測(cè)試的時(shí)候,你用著特定的 Node.js 版本,比如 0.10,如果測(cè)試過了,你也還是不懂在 0.11 下,你的測(cè)試能不能通過。你可以手動(dòng)地切換 node 版本再跑一次,也可以選擇讓 travis 幫你把不同的 node 版本跑一次。而且有時(shí)候,我們 npm 安裝了某個(gè)包,但卻忘記將它寫入 package.json 里面了,在自己的機(jī)器上,測(cè)試沒問題,但當(dāng)別的用戶安裝你的包時(shí),會(huì)發(fā)現(xiàn)有依賴缺失。

travis 應(yīng)該是把虛擬機(jī)的技術(shù)玩得比較好,它每次跑測(cè)試時(shí),都會(huì)提供一個(gè)空白的環(huán)境。這個(gè)環(huán)境只有 Linux 基本的 build-essentialwgetgit 那些依賴。連 Node.js 的運(yùn)行時(shí)都是現(xiàn)跑現(xiàn)安裝的。

travis 默認(rèn)帶有的那些依賴,都是每個(gè)用戶的機(jī)器上都會(huì)有的,所以一旦你的應(yīng)用在 travis 上面能夠跑通,那么就不用擔(dān)心別的用戶安裝不上了。

我們來講講接入 travis 的步驟。

travis 的價(jià)格是免費(fèi)的,對(duì)于 github 上的開源項(xiàng)目來說。它默認(rèn)當(dāng)然不可能幫 github 的每個(gè)用戶都跑測(cè)試,所以你需要去注冊(cè)一下 travis,然后告訴它你需要開啟集成測(cè)試的倉庫。

http://wiki.jikexueyuan.com/project/node-lessons/images/13-2.png" alt="" />

比如上圖,可以看到我?guī)妥约旱?alsohosts 項(xiàng)目以及 adsf 項(xiàng)目開啟了測(cè)試。

當(dāng)你在 travis 授權(quán)了倉庫之后,每當(dāng)你 push 代碼到 github,travis 都會(huì)自動(dòng)幫你跑測(cè)試。

travis 通過授權(quán),可以知道你的項(xiàng)目在什么地方,于是它就可以把項(xiàng)目 clone 過去。但問題又來了,它不懂你的測(cè)試怎么跑啊。用 npm test 還是 make test 還是 jake test 呢?

所以我們需要給出一些配置信息,配置信息以 .travis.yml 文件的形式放在項(xiàng)目根目錄,比如一個(gè)簡(jiǎn)單的 .travis.yml

language: node_js
node_js:
 - '0.8'
 - '0.10'
 - '0.11'

script: make test

這個(gè)文件傳遞的信息是:

  • 這是一個(gè) node.js 應(yīng)用
  • 這個(gè)測(cè)試需要用 0.8、0.10 以及 0.11 三個(gè)版本來跑
  • 跑測(cè)試的命令是 make test

將這個(gè)文件添加到項(xiàng)目的根目錄下,再 push 上 github,這時(shí)候 travis 就會(huì)被觸發(fā)了。

travis 接著會(huì)做的事情是:

  1. 安裝一個(gè) node.js 運(yùn)行時(shí)。由于我們指定了三個(gè)不同版本,于是 travis 會(huì)使用三個(gè)機(jī)器,分別安裝三個(gè)版本的 node.js
  2. 這些機(jī)器在完成運(yùn)行時(shí)安裝后,會(huì)進(jìn)入項(xiàng)目目錄執(zhí)行 npm install 來安裝依賴。
  3. 當(dāng)依賴安裝完成后,執(zhí)行我們指定的 script,在這里也就是 make test

如果測(cè)試通過的話,make 命令的返回碼會(huì)是 0(如果不懂什么是返回碼,則需要補(bǔ)補(bǔ) shell 的知識(shí)),則測(cè)試通過;如果測(cè)試有不通過的 case,則返回碼不會(huì)為 0,travis 則判斷測(cè)試失敗。

每一個(gè) travis 上面的項(xiàng)目,都可以得到一個(gè)圖片地址,這個(gè)地址上的圖片會(huì)顯示你項(xiàng)目當(dāng)前的測(cè)試通過狀態(tài),把這個(gè)圖片添加到自己項(xiàng)目的 README 中,就可以得到我們圖1的那種逼格了。

對(duì)了,行覆蓋率的那個(gè) badge 是由一個(gè)叫 coveralls(https://coveralls.io/ ) 的服務(wù)提供的。大家可以試著自己接入。

補(bǔ)充說明:

如果你的應(yīng)用有使用到數(shù)據(jù)庫, 需要在 .travis.yml 中添加一些內(nèi)容.

以 MongoDB 為例:

services:
    mongodb

其它數(shù)據(jù)庫詳細(xì)內(nèi)容參考travis 官方文檔