Karma Generator 重建 0.8.0

Allo’ allo’!我是來自 Yeoman 團隊的 Eddie,來為 Karma Generator 的最新變更說明。這次變更的重點是設定和測試。

為何需要重建?

tl;dr:沒必要重建。 Angular generator 需要一些變更才能持續運作。

Karma 團隊 近期對 Karma 安裝外掛的方式 進行了一些變更。以前,預設會安裝很多外掛,現在不會安裝任何外掛。很多人認為這個變更很糟。事實上,這是個很棒的變更,因為不再會包含膨脹軟體。現在只會安裝使用者想要的外掛。

Angular generator 使用 Karma generator 來撰寫測試元件。Karma 的變更導致測試無法開箱即用。測試抱怨無法執行某些工作,例如啟動瀏覽器。一種快速修復方法是將遺失的外掛作為 Angular 生成流程的一部分安裝。這不是一個理想的修復方法,因為會讓專案更脆弱且可組合性更低。更好的解決方案是讓 Karma generator 更具自訂性。

此外,這個專案很適合測試 Generator 系統 新的 0.17.0 變更。

重建的目標為何?

  • 使用新的 0.17.0 Yeoman Generator
  • 提升整體測試品質
  • 支援自訂 Karma 設定中的幾乎所有內容
  • 安裝使用者要求的 Karma 外掛(以及未明確指定的必要外掛)
  • 撰寫 Gruntfile.js 設定區塊和任務

0.17.0 Yeoman Generator

Simon 近期對 Yeoman Generator 系統進行了大量變更,需要一些實際測試。雖然並未測試到每個新功能,但核心功能均有接觸。這些包括更簡單的測試方法、更簡潔的 generator 語法以及 Gruntfile 整合*

測試

新的 Generator 系統讓測試重建成為一種樂趣,而非令人厭煩的任務。它減少了所需的程式碼量,同時提高可讀性。這通常不會發生,所以這是一個令人歡迎的改變。

generator 測試現在涵蓋測試選項和檔案建立,而不是同時執行這兩項。如此一來,測試應能確保更高的準確度,因為元件可以獨立測試。每一個原始碼變更都是可驗證的;不再需要擔心這個或那個變更是否會破壞整個元件。

自訂

產生器中目前無法自訂的部分不多,以下是可用的選項清單

  • 指定執行測試的瀏覽器(預設為 PhantomJS)
  • 要使用的架構(預設為 Jasmine)
  • 要測試的文件
  • 要使用的外掛程式,包括架構或瀏覽器等遺失的外掛程式會由產生器加入。
  • 設定檔寫入的位置(包括名稱和路徑)

這不是完整的清單,詳細內容請查看專案的 README

Gruntfile

產生器也會嘗試加入適當的 Gruntfile 組態區塊和工作。這是一種值得歡迎的改變,相較於手動操作並試圖做對,這個改變更好。CoffeeScript 編寫的 Gruntfiles 請參閱 CoffeeScript 注意事項

CoffeeScript Gruntfile 支援

CoffeeScript 沒有剖析器,無法以程式化方式讀取它並插入組態(如果有,歡迎提出需求)。由於這項原因,產生器系統無法寫入組態:()

黑暗面

不過,並非一切都那麼完美;這次改寫也有一些缺點。第一點,也是優點,不再以 Angular 為中心。angular-scenarioangular-mock 不再預設安裝。若要使用它們,請將它們新增為 bower-components 選項中的元件。另一個改變是不再有其他預設外掛程式,除了 Jasmine 和 PhantomJS 所需的兩個以外。

比較 karma init

有了 karma init,這個產生器會不會有點多餘?

不會。karma init 會根據基本的組態檔建立腳手架,但不能像此產生器一樣提供這麼多的自訂選項。它也不會更新 Gruntfile。這個產生器提供了這些功能,能與其他產生器結合使用,並安裝相依關係。

總結

我希望這次改寫可以作為其他 Yeoman 產生器未來方向的指標,至少測試應該能讓許多人展露笑容,因為測試現在變得更強大了。

像往常一樣,請在 問題頁面 提出錯誤回報,隨時歡迎提出需求,但務必先從提出變更建議的問題開始。


« 查看更多文章