2013年8月26日

O'Reilly 新書介紹 JavaScript Testing with Jasmine by Evan Hahn


你的 JavaScript 程式碼需要測試嗎?如果答案為 YES,那麼先選擇一套合適的測試框架,將是重要的第一步。

在敏捷軟體開發(Agile Software Development),許多開發者推崇「BDD(Behavior-driven development)」的實踐方式,當然在 JavaScript 的世界中,也有許多 BDD 的選擇。

《JavaScript Testing with Jasmine》是一本輕薄短小的入門書,只有不到 50 頁的內容,所以一個下午茶的時間,就能讓你輕鬆瞭解 Jasmine 的美麗與哀愁。

JavaScript Testing with Jasmine
JavaScript Behavior-Driven Development
By Evan Hahn

對於第一次接觸 Jasmine 或其他 JavaScript Testing 框架的開發者,其實最重要的事情,並不是完整的學習。而是需要一些足夠的資訊,用來分辨這個框架是否合用。

對許多開發者來說,習以為常的作法,也許是先下載建置好一個測試環境,然後照著框架的 Getting Started 文件苦命 Try。不過時代進步太快速,如果用拼命 Try 的方式來面對新技術,恐怕再多的新鮮肝都不夠應付啊!

所以,換個方式,找個舒適的角落,泡杯咖啡拿起一本書,享受下午茶的閱讀時光,也許就是這類書籍可提供的價值。

有許多 Open Source 的框架本身很優秀,可是卻沒有淺顯易懂的教學文件,容易讓初學者錯過。以 Jasmine 來說,即使開發者已經瞭解 BDD 的精神,但看著 Jasmine 官方文件的範例和教學,恐怕還是很難在短時間之內掌握重點。假如對 BDD 或 Test-driven 不熟悉,卻想在學習使用框架同時也加深對 BDD 的體悟,就更需要一份好的上手指南。

作者 Evan 對許多 JavaScript 開發框架的涉獵,使這本書以簡單明瞭的範例,讓讀者在最短時間吸收到 Key Points,進而幫助決策 Jasmine 是否為適合專案採納的框架。

如果你需要一本鉅細靡遺的參考書,對於 Jasmine 或 BDD 有全面完整性的介紹,那麼請掠過這本書,因為它太精簡輕薄以致於無法涵蓋太多內容。

但如果你想利用一杯咖啡的時間,瞭解 Jasmine 是什麼?如何使用?看簡單的範例及執行結果?那麼請別錯過這本書的電子版,利用 Kindle 或其他電子書裝置閱讀它。

到底 Jasmine 的 BDD 測試案例程式碼長什麼樣子呢?

BDD 是用 DSL(Domain-Specific Language)的風格來撰寫測試代碼,讓一段測試程式本身就容易從字面推敲出背後要達到的測試目的。舉例來說,書中提供的這個範例,我們並不需要透過任何註解,就不難看出這段代碼對 Employee 物件所進行的兩項測試。

describe("employee", function() {
          var employee;
          beforeEach(function() {
              employee = new Employee;
          });
          it("has a name", function() {
              expect(employee.name).toBeDefined();
          });
          it("has a role", function() {
              expect(employee.role).toBeDefined();
          });
});

Jasmine 巧妙運用 JavaScript 的函數型程式設計風格,讓測試代碼變得更為容易閱讀。

如果你只看目錄,會以為這本書內容包羅萬象,例如「Jasmine and Node.js」,不過千萬別誤會,它對所有內容都是點到為止,例如關於 Node.js 的部份也僅限於說明 NPM 如何裝...如此而已。

對於 Jasmine 的介紹,這本書確實也比不上 Jasmine 專案首頁的說明詳細。

不過,如果你是一位 JavaScript 開發者,對 BDD 有些興趣,又剛好想認識 Jasmine 框架,並且用划算的方式取得電子書;那這本書將幫你省下一些找資料和消化吸收所需的時間。

更多訊息請參考:

@本文作者 lyhcode 是 O'Reilly Blogger Review Program 會員,將不定期評論最新的熱門軟體技術書籍。

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!